Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Hecaton
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 5
#1

Шаблоны и двоичное дерево - C++

30.05.2010, 18:49. Просмотров 856. Ответов 0
Метки нет (Все метки)

Прошу помощи!
Необходимо создать программу, которая будет работать с бинарным деревом: добавление, удаление, просмотр. Реализовать необходимо при помощи шаблонов функций.
P.s. Прошу не потому-что я лентяй и неуч, просто совсем забыл про эту лабораторную работу, которую сдавать уже завтра. Времени совсем нету: мне ещё нужно сдавать завтра курсач по программированию. Проблема в том, что если мне делать самому лабу, то ещё нужно читать теорию по деревьям, но, повторюсь, - у меня полный аврал!

Если возможно переделать, то вот программа, которую я создал при помощи шаблонов, но только для очереди:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <locale>
using namespace std;
 
template <class T>
struct sNode
{
   T data;
   sNode* next;
};
 
// Шаблон класса
template <class T>
class cQueue
{
   private:
          sNode<T>* first;
          sNode<T>* last;
   public:
          cQueue();
          ~cQueue();
          void add(T _data);
          void del();
          void print();
};
 
// Конструктор
template <class T> cQueue<T>::cQueue()
{
   first = 0;
   last = 0;
}
 
// Деструктор
template <class T> cQueue<T>::~cQueue()
{
   if (!first)
        return;
   sNode<T>* item = first;
   while (item)
   {
      sNode<T>* del = item;
      item = item->next;
      delete del;
   }
 
}
 
// добавление нового элемента в очередь
template <class T> void cQueue<T>::add(T _data)
{
    sNode<T>* item = new sNode<T>;
    item->data = _data;
    item->next = 0;
    if (!last)
       first = item;
    else
        last->next = item;
    last = item;
}
 
// удаление элемента из очереди
template <class T> void cQueue<T>::del()
{
   if (!first)
   {
      cout << "\nПусто";
      return;
   }
   sNode<T>* item = new sNode<T>;
   first = first->next;
   if (!first)
      last = 0;
   delete item;
   cout << "\nУдалено";
}
 
//вывод очереди на экран
template <class T> void cQueue<T>::print()
{
   if (!first)
      cout << "\nОчередь пустая";
   else
   {
      cout << "\nОчередь:\n";
      sNode<T>* item = first;
      while (item)
      {
         cout << item->data << " ";
         item = item->next;
      }
   }
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    cQueue<int> c;  
    int exit = 0;
    do {
       cout << "\n Укажите действие: ";
       cout << "\n1. Добавление";
       cout << "\n2. Удаление";
       cout << "\n3. Просмотр";
       cout << "\n0. Выход \n";
       cout << "\n >>>> "; 
 
       switch (getch())
       {
         case '1':
              cout << "\nВведите число: ";
              int a;                            
              cin >> a;
              c.add(a);
              //getch();
              break;
         case '2':
              c.del();
              getch();
              break;
         case '3':
              c.print();
              getch();
              break;
         case '0':
              exit = 1;
              break;
       }
    } while (!exit);
    return 0;
}
Добавлено через 3 часа 43 минуты
Пожалуйста, помогите кто может! Вот нашёл ссылку где есть, наверное вся теория http://algolist.manual.ru/ds/btree.php, которая мне нужна, но думаю, что взять эти куски кода и просто связать их будет трудно. Помогите.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2010, 18:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шаблоны и двоичное дерево (C++):

Двоичное дерево - C++
Здравствуйте! Помоги задачу решить! Сразу говорю: это не от лени, нам просто мало объясняют! Хотя бы направление дайте, подсказку...Прогу...

Двоичное дерево - C++
Помогите пожалуйста построить двоичное дерево и найти в нём длину пути(количество ветвей от корня) до минимального элемента

Двоичное дерево - C++
Помогите найти ошибку, в консоль вообще ничего не выводится: #include&lt;iostream&gt; #include&lt;string&gt; #include&lt;fstream&gt; using...

Двоичное дерево поиска - C++
Даны 2 вершины дерева .Для каждой из данных вершины вывести ее уровень или информацию что такой вершины нет Подскажите как...

Двоичное дерево Хаффмана - C++
Дана некоторая последовательность данных...(то есть набор каких то значений)...этот набор представляет из себя набор конечных потомков...

указатели. двоичное дерево - C++
Всем добрый день. Объясните мне, пожалуйста, несколько вещей. 1.Вот, например. root-&gt;left что делает он: -&gt; Я вроде читал, но не...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.05.2010, 18:49
Привет! Вот еще темы с ответами:

Не рекурсивно разрушить двоичное дерево - C++
Доброго времени суток, натолкните пожалуйста на мысль, как не рекурсивно освободить память вот такой вот структуры. Дерево создавал...

Сбалансированное двоичное дерево поиска - C++
ЗДРАВСТВУЙТЕ! Есть код. При компилировании выдаёт ошибку. Помогите исправить пожалуйста. avl.h #include &lt;iostream&gt; #include...

Бинарное (двоичное) дерево поиска - C++
В общем задание на лабораторную работу, нужно организовать просто бинарное дерево (якобы научиться работать со структурами), ах да, и...

Реализовать числовое двоичное дерево - C++
Создайте программой числовое двоичное дерево. Опишите функцию, которая находит сумму элементов непустого дерева.:wall:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru