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

Шаблоны классов. Обработка исключительных ситуаций - C++

Восстановить пароль Регистрация
 
monk1992
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 9
04.12.2012, 00:20     Шаблоны классов. Обработка исключительных ситуаций #1
создать шаблон некоторого целевого класса А, возможно, реализован с применением некоторого серверного класса В. Это означает, что объект класса используется как элемент класса А. В качестве серверного класса может быть указан или класс, созданный программистом или класс из стандартной библиотеки - BinaryTree
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
struct node
{
  int key_value;
  node *left;
  node *right;
};
 
class btree
{
    public:
        btree();
        ~btree();
 
        void insert(int key);
        node *search(int key);
        void destroy_tree();
 
    private:
        void destroy_tree(node *leaf);
        void insert(int key, node *leaf);
        node *search(int key, node *leaf);
        
        node *root;
};
 
btree::btree()
{
  root=NULL;
}
 
btree::~btree()
{
  destroy_tree();
}
 
void btree::destroy_tree(node *leaf)
{
  if(leaf!=NULL)
  {
    destroy_tree(leaf->left);
    destroy_tree(leaf->right);
    delete leaf;
  }
}
 
void btree::insert(int key, node *leaf)
{
  if(key< leaf->key_value)
  {
    if(leaf->left!=NULL)
     insert(key, leaf->left);
    else
    {
      leaf->left=new node;
      leaf->left->key_value=key;
      leaf->left->left=NULL;    //Sets the left child of the child node to null
      leaf->left->right=NULL;   //Sets the right child of the child node to null
    }  
  }
  else if(key>=leaf->key_value)
  {
    if(leaf->right!=NULL)
      insert(key, leaf->right);
    else
    {
      leaf->right=new node;
      leaf->right->key_value=key;
      leaf->right->left=NULL;  //Sets the left child of the child node to null
      leaf->right->right=NULL; //Sets the right child of the child node to null
    }
  }
}
 
node *btree::search(int key, node *leaf)
{
  if(leaf!=NULL)
  {
    if(key==leaf->key_value)
      return leaf;
    if(key<leaf->key_value)
      return search(key, leaf->left);
    else
      return search(key, leaf->right);
  }
  else return NULL;
}
 
void btree::insert(int key)
{
  if(root!=NULL)
    insert(key, root);
  else
  {
    root=new node;
    root->key_value=key;
    root->left=NULL;
    root->right=NULL;
  }
}
 
node *btree::search(int key)
{
  return search(key, root);
}
 
void btree::destroy_tree()
{
  destroy_tree(root);
}
void main()
{
    btree tree;
 
    tree.insert(10);
    tree.insert(5);
    tree.insert(20);
    tree.insert(30);
    tree.insert(40);
    tree.insert(50);
    tree.insert(60);
    tree.search(40); // return pointer to node that has value like a 40
    system("@pause");
}
нужно типа менюшку для отображения етого дерева на екране
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2012, 00:20     Шаблоны классов. Обработка исключительных ситуаций
Посмотрите здесь:

C++ Обработка исключительных ситуаций
Обработка исключительных ситуаций. C++
Обработки исключительных ситуаций C++
Ограничения исключительных ситуаций f(.)throw(.){} C++
C++ Обработка исключительных ситуаций
Обработка исключительных ситуаций C++
C++ Обработка исключительных ситуаций!
Обработка исключительных ситуаций C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 10:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru