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

Дерево бинарного поиска - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Напечатать суммы и количество чисел расположенных между соседними нулями http://www.cyberforum.ru/cpp-beginners/thread75938.html
Прошу Вас, помогите пожалуйста бедному студенту с лабой :( В массиве все элементы – положительные целые числа и нули. Напечатать суммы и количество чисел расположенных между соседними нулями...
C++ Floating point error:Domain.Abnormal program termination - ??? это что значит? Floating point error: Domain. Abnormal program termination #include <stdio.h> #include <conio.h> #include <math.h> void main() { /* объявление и инициализация переменных */ double t = 11,... http://www.cyberforum.ru/cpp-beginners/thread75926.html
C++ Доброго времени суток
Народ! Помогите пожалуйста начинающему программисту... Здесь представлен код для вывода в консоль файлов из папки... #include <iostream> #include <windows.h> //#include <> using namespace std;...
срочно ! C++
ДАно предложение. В нем только 2 слова одинаковые. НАйти эти слова. Помогите
C++ Строки в C++ http://www.cyberforum.ru/cpp-beginners/thread75904.html
Дано предложениею. В нем только 2 слова одинаковые . НАйти эти слова
C++ Разбить заданное число на цифры и записать их в массив всем привет! у меня єсть задача в с++ и я не могу єє розвязать Дано число n и надо его разбить на части(посимвольно) и замисать в масив подробнее

Показать сообщение отдельно
Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
17.12.2009, 20:35
вот тебе рабочий вариант, он должен помоч, я надеюсь:
//если не понятно - спрашивай.
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
134
135
136
137
138
139
#include<iostream>
using namespace std;
 
template <class T,class I> class node
{
      private:
              T x; //ключ
              I info;//информация
              node* LL; //left link
              node* RL; //right link
      public:
             node(){x=0;LL=0;RL=0;};
             ~node()
             {
                  if (LL) LL->~node();
                  if (RL) RL->~node();
                  if (LL) {delete LL; LL=0;}
                  if (RL) {delete RL; RL=0;}
             }
             void putx(T new_x,I new_info){this -> x=new_x;this -> info=new_info;}
             void null_leftlink(){this -> LL=0;}
             void null_rightlink(){this -> RL=0;}
             void add(T new_x, I new_info)
             {
                  if (LL&&(new_x < x)) LL->add(new_x,new_info);
                  if (RL&&(new_x > x)) RL->add(new_x,new_info);
                  
                  if (!LL&&(new_x < x))
                  {
                          node* N=new node;
                          N->x=new_x;
                          N->info=new_info;
                          N->LL=0;
                          N->RL=0;
                          LL=N;
                  }
                  if (!RL&&(new_x > x))
                  {
                          node* N=new node;
                          N->x=new_x;
                          N->info=new_info;
                          N->LL=0;
                          N->RL=0;
                          RL=N;
                  }
             }
             void print(int tab)
             {
                  if (RL) RL-> print(tab + 1);
                     for(int i=1;i!=tab;i++)cout << "  "; cout <<this->x << "-"<< this->info << endl;
                  if(LL) LL->print(tab + 1);      
             }
             void del_all()
             {
                  if (LL) LL->del_all();
                  if (RL) RL->del_all();
                  if (LL) {delete LL; LL=0;}
                  if (RL) {delete RL; RL=0;}
             }
             void del(T x_to_del)
             {
                  if (LL) LL->del();
                  if (RL) RL->del();
                  //не дописано еще.
             }
             I get(T getx)
             {
                  if (getx==x) return info;
                  if (LL&&(getx < x)) return LL->get(getx);
                  if (RL&&(getx > x)) return RL->get(getx);
             }
};
 
template <class T,class I> class tree
{
      private:
              node <T,I>* link;
      public:
             tree(){link=0;};
             ~tree(){if (link)link->~node<T,I>();delete link; link=0;};
             void add(T new_x,I new_info)
             {
                  if (link) link->add(new_x,new_info);
                  else
                  {
                      node<T,I>* N=new node<T,I>;
                      N->putx(new_x,new_info);
                      N->null_leftlink();
                      N->null_rightlink();
                      link=N;
                  }
             };
             void print(){if(link)link->print(1);else cout << "No tree existing\n";}
             void del_all(){if(link) link->del_all(); delete link; link=0;}
             void del(int x){if (link)link->del(x);};
             I get(T x){if (link) return link->get(x);else cout << "No elements existing\n";}
};
 
int main()
{
    system("cls");//clear screen
    tree <int,char> *T=new tree <int,char>; // создание дерева
    //menu
    int choos=0;
    const int exit=6;
    while (choos!=exit)
    {
          cout << "Hello! This is a 'tree' example\n"
                  "There is a menu for you to choos:\n"
                  "  1-add;\n"
                  "  2-use destructor;\n"
                  "  3-print;\n"
                  "  4-delete all;\n"
                  "  5-get element;\n"
                  "  6-exit;\n"
                  "enter-> "; cin >> choos; system("cls");
          switch (choos){
                 case 1: {
                         int key; //ключ.
                         char val; //значение
                         cout << "enter key: "; cin >> key;
                         cout << "enter int value: "; cin >> val; 
                         T->add(key,val); 
                         break;
                 }
                 case 2: T->~tree(); break;
                 case 3: T->print(); break;
                 case 4: T->del_all(); break;
                 case 5:{
                      cout << "what is key of element? "; 
                      int key=0;
                      cin >> key;
                      cout << "there it is: " << T->get(key) << endl;
                      break;}
                 default: if (choos!=exit)cout << "wrong int value " << choos << endl;
          }
    }
    delete T; //удаление дерева, используется деструктор.
}
у меня работает (DEV-C++ 4.9.9.2), в main() меню для работы с деревом.
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru