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

Главная/

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

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

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

15); //вставка элементов

        a.Sort(); }     //сортировка элементов

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

// 7. Дерево с ограниченным числом потомков

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

// 4. Двоичный поиск на основе сравнения с внешним обьектом-ключом

template <class T,int size> class Tree

{       private:

      Tree<T,size> *child[size];

      T data;

        public:

        Tree();

     ~Tree();

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

                T FindBin(T key);};

template <class T,int size> Tree<T,size>::Tree()

{       for(int i=0;i<size;i++) child[i]=NULL;  data=0; }

template <class T,int size> Tree<T,size>::~Tree()

{       for(int i=0;i<size;i++)

        if(child[i]!=NULL) delete child[i]; }//удаление поддеревьев

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

{       if(data==0)     { data=a; return; }

   for(int i=0;i<size&&child[i]!=NULL&&a>child[i]->data;i++);

   if(child[i]==NULL) child[i]=new Tree<T,size>;

        child[i]->Add(a); }

template <class T,int size> T Tree<T,size>::FindBin(T key)

{  T p;

   if (data==key) return data;//совпадение

        for(int i=0;i<size&&child[i]!=NULL;i++) //поиск

        {       p=child[i]->FindBin(key);

                if(p!=NULL) return p; } //найден

  return NULL;  } //не найден

void main()

{  Tree<int,5> a;    //создание дерева с пятью потомками в вершине

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

        int j=a.FindBin(11); }

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

// 7. Дерево с ограниченным числом потомков

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

// 5. Включение элемента по номеру.

template <class T,int size> class Tree

{       private:

      Tree<T,size> *child[size];

      T data;

        public:

        Tree();

     ~Tree();

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

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

template <class T,int size> Tree<T,size>::Tree()

{       for(int i=0;i<size;i++) child[i]=NULL;  data=0; }

template <class T,int size> Tree<T,size>::~Tree()

{       for(int i=0;i<size;i++)

        if(child[i]!=NULL) delete child[i]; }//удаление поддеревьев

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

{       if(data==0)     { data=a; return; }

   for(int i=0;i<size&&child[i]!=NULL&&a>child[i]->data;i++);

   if(child[i]==NULL) child[i]=new Tree<T,size>;

        child[i]->Add(a); }

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

{       if(pos==0)  //позиция найдена

        {       if(data==NULL) { data=a; return; } //вставка

      if(child[0]==NULL) child[0]=new Tree<T,size>;

                child[0]->Insert(data,0); data=a;       return; }  //вставка в поддерево

   for(int i=0;i<size;i++) //вставка на текущий уровень

                if(child[i]!=NULL)

                        if(--pos==0) { child[i]->Insert(a,pos); return; }

   if(i<size) { child[0]=new Tree<T,size>; child[i]->Insert(a,0); return; }

   for(i=0;i<size;i++) //вставка в поддерево

                if(child[i]!=NULL)

                {       child[i]->Insert(a,pos); } }

void main()

{  Tree<int,5> a;    //создание дерева с пятью потомками в вершине

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

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

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

// 7. Дерево с ограниченным числом потомков

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

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

template <class T,int size> class Tree

{       private:

      Tree<T,size> *child[size];

      T data;

        public:

        Tree();

     ~Tree();

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

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

template <class T,int size> Tree<T,size>::Tree()

{       for(int i=0;i<size;i++) child[i]=NULL;  data=0; }

template <class T,int size> Tree<T,size>::~Tree()

{       for(int i=0;i<size;i++)

        if(child[i]!=NULL) delete child[i]; }//удаление поддеревьев

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

{       if(data==0)     { data=a; return; }

   for(int i=0;i<size&&child[i]!=NULL&&a>child[i]->data;i++);

   if(child[i]==NULL) child[i]=new Tree<T,size>;

        child[i]->Add(a); }

template <class T,int size> void Tree<T,size>::Delete(int pos)

{  if(pos==0) data=0;

        for(int i=0;i<size;i++) //текущий уровень

                if(child[i]!=NULL)

                        if(--pos==0) { child[i]->data=0; return; }

   for(i=0;i<size;i++) //поддерево

                if(child[i]!=NULL)

                {       child[i]->Delete(pos); }  }

void main()

{  Tree<int,5> a;    //создание дерева с пятью потомками в вершине

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

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

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

// 7. Дерево с ограниченным числом потомков

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

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

template <class T,int size> class Tree

{       private:

      Tree<T,size> *child[size];

      T data;

        public:

        Tree();

     ~Tree();

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

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

template <class T,int size> Tree<T,size>::Tree()

{       for(int i=0;i<size;i++) child[i]=NULL;  data=0; }

template <class T,int size> Tree<T,size>::~Tree()

{       for(int i=0;i<size;i++)

        if(child[i]!=NULL) delete child[i]; }//удаление поддеревьев

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

{       if(data==0)     { data=a; return; }

   for(int i=0;i<size&&child[i]!=NULL&&a>child[i]->data;i++);

   if(child[i]==NULL) child[i]=new Tree<T,size>;

        child[i]->Add(a); }

template <class T,int size> T Tree<T,size>::Get(int pos)

{  if(pos==0) return data;

        for(int i=0;i<size;i++) //текущий уровень

                if(child[i]!=NULL)

                        if(--pos==0) { return

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


Copyright © 2005—2007 «RefStore.Ru»