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

Главная/

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

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

←предыдущая следующая→
... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 

элемента по номеру.

template <class T> class List

{       private:

      List<T> *next,*prev;

      T *data;

        public:

        List(T a);

     ~List();

                void Insert(T a,int pos); }; //вставка элемента

template <class T> List<T>::List(T a)

{       next=this; prev=this;

        data=new T; *data=a; }//выделение памяти и копирование

template <class T> List<T>::~List()

{       delete data;    //удаление элемента

        data=NULL;

        if(next!=NULL&&next->data!=NULL) //проверка на зацикливание

                delete next; }//удаление списка

template <class T> void List<T>::Insert(T a,int pos)

{       List<T> *p=this,*q;

        while(pos-->0&&p->next!=this) p=p->next; //ищем место в списке

   q=p->next;

        p->next=new List<T>(*p->data);    //создаем новый элемент

        *p->data=a;        //записываем данные

        p->next->next=q;

        p->next->prev=p; }  //восстанавливаем последовательность элементов

void main()

{  List<int> a(10);    //создание списка

        a.Insert(55,1); }; //вставка элемента на первую позицию

//----------------------------------------------------------------------------

// 6. Двусвязный циклический список

// 1. Хранение указателей на объекты

// 6. Исключение (удаление) элемента по номеру.

template <class T> class List

{       private:

      List<T> *next,*prev;

      T *data;

        public:

        List(T a);

     ~List();

                void Insert(T a,int pos);  //вставка элемента

                void Delete(int pos); };//удаление элемента

template <class T> List<T>::List(T a)

{       next=this; prev=this;

        data=new T; *data=a; }//выделение памяти и копирование

template <class T> List<T>::~List()

{       delete data;    //удаление элемента

        data=NULL;

        if(next!=NULL&&next->data!=NULL) //проверка на зацикливание

                delete next; }//удаление списка

template <class T> void List<T>::Insert(T a,int pos)

{       List<T> *p=this,*q;

        while(pos-->0&&p->next!=this) p=p->next; //ищем место в списке

   q=p->next;

        p->next=new List<T>(*p->data);    //создаем новый элемент

        *p->data=a;        //записываем данные

        p->next->next=q;

        p->next->prev=p; }  //восстанавливаем последовательность элементов

template <class T> void List<T>::Delete(int pos)

{  if(pos==0||next==this)return;//первый или единственный элемент не удаляется

        List<T> *p=this,*q=next;

        while(pos-->1&&q->next!=this){ p=p->next;q=q->next; }//ищем место в списке

   p->next=q->next;

        q->next->prev=p;

        q->next=NULL;

        delete q; }

void main()

{  List<int> a(10);    //создание списка

        a.Insert(55,1);  //вставка элемента на первую позицию

        a.Delete(1);} //удаление элемента

//----------------------------------------------------------------------------

// 6. Двусвязный циклический список

// 1. Хранение указателей на объекты

// 7. Поиск и возвращение элемента по номеру.

template <class T> class List

{       private:

      List<T> *next,*prev;

      T *data;

        public:

        List(T a);

     ~List();

                void Insert(T a,int pos);  //вставка элемента

                T* Get(int num); };//получить элемент по номеру

template <class T> List<T>::List(T a)

{       next=this; prev=this;

        data=new T; *data=a; }//выделение памяти и копирование

template <class T> List<T>::~List()

{       delete data;    //удаление элемента

        data=NULL;

        if(next!=NULL&&next->data!=NULL) //проверка на зацикливание

                delete next; }//удаление списка

template <class T> void List<T>::Insert(T a,int pos)

{       List<T> *p=this,*q;

        while(pos-->0&&p->next!=this) p=p->next; //ищем место в списке

   q=p->next;

        p->next=new List<T>(*p->data);    //создаем новый элемент

        *p->data=a;        //записываем данные

        p->next->next=q;

        p->next->prev=p; }  //восстанавливаем последовательность элементов

template <class T> T* List<T>::Get(int num)

{       List<T> *p=this;

        while(num-->0&&p->next!=this) { p=p->next; }//ищем в списке

        return p->data; }

void main()

{  List<int> a(10);    //создание списка

        a.Insert(15,1); a.Insert(6,1); a.Insert(7,1);  //вставка элементов

        int i=*a.Get(2); };  //взять элемент по номеру

//----------------------------------------------------------------------------

// 6. Двусвязный циклический список

// 2. Хранение объектов

// 1. Включение элемента с сохранением упорядочености.

template <class T> class List

{       private:

      List<T> *next,*prev;

      T data;

        public:

        List(T a);

     ~List();

                void Add(T a); }; //добавление элемента

template <class T> List<T>::List(T a)

{       next=this; prev=this; data=a; }

template <class T> List<T>::~List()

{       data=-1;        if(next!=NULL&&next->data!=-1) //проверка на зацикливание

                delete next; }//удаление списка

template <class T> void List<T>::Add(T a) //добавление элемента

{  List<T> *p=this,*q=next;

        while(p->data<a&&q!=this) { p=p->next; q=q->next; } //поиск места

        if(p->data<a) p->next=new List<T>(a); else  // вставка после

        {       p->next=new List<T>(p->data);         //   -//-  до

                        p->data=a; }

        p->next->next=q;        p->next->prev=p;  }  //расстановка связей

void main()

{  List<int> a(10);    //создание списка

   a.Add(5);   a.Add(11);  a.Add(3); };   //вставка элементов

//----------------------------------------------------------------------------

// 6. Двусвязный циклический список

// 2. Хранение объектов

// 2. Поиск и возвращение минимального обьекта.

template <class T> class List

{       private:

      List<T> *next,*prev;

      T data;

        public:

        List(T a);

     ~List();

      T FindMin(); //поиск минимального

                void Insert(T a,int pos); }; //вставка элемента

template <class T>

←предыдущая следующая→
... 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 


Copyright © 2005—2007 «RefStore.Ru»