Пример: Глобальная сеть INTERNET
Я ищу:
На главную  |  Добавить в избранное  

Главная/

Программирование, базы данных. /

Шпоры по Си++. Шаблоны стандартных структур данных

←предыдущая следующая→
... 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 ... 


Copyright © 2005—2007 «RefStore.Ru»