←предыдущая следующая→
... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
*a[1]=9; *a[2]=17; //заносим значения
int i=*a.FindBin(17); } //двоичный поиск
//----------------------------------------------------------------------------
//4. динамический массив
//2. хранение обьектов
//5. Включение элемента по номеру.
template <class T> class DArray
{ private:
int size;
T *data;
public:
DArray(int _size);
~DArray();
T* operator[](int i);};
template <class T> DArray<T>::DArray(int _size)
{ size=_size;
data=(T*) new T[size];
for(int i=0;i<size;i++) data[i]=0; }
template <class T> DArray<T>::~DArray()
{ delete [] data; }
template <class T> T* DArray<T>::operator[](int i)
{ if(i<0||i>=size) return NULL;
return &data[i]; }
void main()
{ DArray<int> a(30); //заводим массив указателей на int
*a[4]=6; *a[6]=7; *a[1]=2; //заносим значения
int i=*a[4]; i=*a[6]; i=*a[1]; } //получаем значения
//----------------------------------------------------------------------------
//4. динамический массив
//2. хранение обьектов
//6. Исключение (удаление) элемента по номеру.
template <class T> class DArray
{ private:
int size;
T *data;
public:
DArray(int _size);
~DArray();
T* operator[](int i);
void Del(int i); };
template <class T> DArray<T>::DArray(int _size)
{ size=_size;
data=(T*) new T[size];
for(int i=0;i<size;i++) data[i]=0; }
template <class T> DArray<T>::~DArray()
{ delete [] data; }
template <class T> T* DArray<T>::operator[](int i)
{ if(i<0||i>=size) return NULL;
return &data[i]; }
template <class T> void DArray<T>::Del(int i)
{ if(i<0||i>=size) return;
data[i]=0; }
void main()
{ DArray<int> a(30); //заводим массив указателей на int
*a[0]=500; *a[1]=98; *a[2]=17; //заносим значения
a.Del(0); a.Del(1); a.Del(2); } //удаляем
//----------------------------------------------------------------------------
//4. динамический массив
//2. хранение обьектов
//7. Поиск и возвращение элемента по номеру.
template <class T> class DArray
{ private:
int size;
T *data;
public:
DArray(int _size);
~DArray();
T* operator[](int i); };
template <class T> DArray<T>::DArray(int _size)
{ size=_size;
data=(T*) new T[size];
for(int i=0;i<size;i++) data[i]=0; }
template <class T> DArray<T>::~DArray()
{ delete [] data; }
template <class T> T* DArray<T>::operator[](int i)
{ if(i<0||i>=size) return NULL;
return &data[i]; }
void main()
{ DArray<int> a(20); //заводим массив указателей на int
*a[4]=6; *a[6]=7; *a[1]=2; //заносим значения
int i=*a[4]; i=*a[6]; i=*a[1]; } //получаем значения
//----------------------------------------------------------------------------
// 5. Односвязный список
// 1. Хранение указателей на объекты
// 1. Включение элемента с сохранением упорядочености.
template <class T> class List
{ private:
List<T> *next;
T *data;
public:
List(T a);
~List();
void Add(T a); }; //добавление элемента
template <class T> List<T>::List(T a)
{ next=NULL; data=new T; *data=a; }//выделение памяти и копирование
template <class T> List<T>::~List()
{ delete data; if(next!=NULL) delete next; }//удаление элемента и списка
template <class T> void List<T>::Add(T a) //добавление элемента
{ if(next==NULL) //если последний
{ if(a>*data) next=new List<T>(a); else
{ next=new List<T>(*data);
*data=a; } } else
{ if(a<*data) //если вставляемый меньше текущего
{ next->Add(*data); //раздвигаем (рекурсия)
*data=a; } else
if(a>*data&&a<*next->data) //если вставляемый должен быть следующим
{ List<T> *p=next;
next=new List<T>(a); //создаем новый элемент
next->next=p; } else
next->Add(a); } } //если вставляемый больше текущего (рекурсия)
void main()
{ List<int> a(10); //создание списка
a.Add(5); a.Add(11); a.Add(3); } //вставка элементов
//----------------------------------------------------------------------------
// 5. Односвязный список
// 1. Хранение указателей на объекты
// 2. Поиск и возвращение минимального обьекта.
template <class T> class List
{ private:
List<T> *next;
T *data;
public:
List(T a);
~List();
T *FindMin(); //поиск минимального
void Insert(T a,int pos); }; //вставка элемента
template <class T> List<T>::List(T a)
{ next=NULL; data=new T; *data=a; }//выделение памяти и копирование
template <class T> List<T>::~List()
{ delete data; if(next!=NULL) delete next; }//удаление элемента и списка
template <class T> T* List<T>::FindMin()
{ T* tmp=data; //принимаем начальный за минимальный
List<T> *p=this->next;
while(p!=NULL) //проходим список
{ if(*p->data<*tmp) tmp=p->data; //если есть меньший - запоминаем
p=p->next; }
return tmp; } //возвращаем минимальный
template <class T> void List<T>::Insert(T a,int pos)
{ List<T> *p=this,*q;
while(pos-->0&&p->next!=NULL) p=p->next; //ищем место в списке
q=p->next;
p->next=new List<T>(*p->data); //создаем новый элемент
*p->data=a; //записываем данные
p->next->next=q; } //восстанавливаем последовательность элементов
void main()
{ List<int> a(10); //создание списка
a.Insert(15,1); a.Insert(4,2); a.Insert(7,3);//вставка элементов
int k=*a.FindMin(); } // поиск минимального
//----------------------------------------------------------------------------
// 5. Односвязный список
// 1. Хранение указателей на объекты
// 3. Сортировка (любым методом).
←предыдущая следующая→
... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...
|
|