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

Бинарные деревья - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа на С http://www.cyberforum.ru/cpp-beginners/thread306356.html
Доброго времени суток. Помогите пожалуйста с программкой на C Задача такая: Создать программу которая содержит динамическую информацию про наличие автобусов в авто. парке. Ведомость про каждый автобус содержит: номер автобус , ФИО водителя , номер маршрута. Програма должна обеспечивать: - первичную формировку данных про все автобусы в виде списка. - при выезде автобуса из парка вводиться...
C++ Динамические массивы структур;Классы. Класс массивы структур;Классы. Класс динамического массива структур. Здраствуйте.Помогите с практичкой мое задание 4.3. Строка таблицы данных содержит следующую информацию о владельцах авто: ф.и.о. владельца, марка авто, год выпуска, страна производитель. Требуется найти: 4.3.1) перечень владельцев с указанием числа их авто; в методичках указаны шаблоны. Огромное Спасибо за помощь! http://www.cyberforum.ru/cpp-beginners/thread306352.html
C++ неправильное значение переменной
вот код #include "stdafx.h" #include <cstdlib> #include <iostream> #include <cmath> using namespace std; int _tmain(int argc, _TCHAR* argv){ setlocale(LC_CTYPE,"rus"); int m,n,koeff,a; cout<<"Введите степень уравнения ";
C++ Абракадабровый C++
Вся проблема в чём - при вводе на русском я пишу какой-то абракадброй вроде иероглифов. Следствие установило, что эта хрень начинается после цикла do. Вот сам код, чистый консольный проект вин32: #include <iostream> #include <conio.h> using namespace std; enum itsaWord { NO, YES }; int main() { setlocale(0,""); itsaWord isWord=NO; char ch='a';
C++ Программа удаляет из строки слово с заданным номером. http://www.cyberforum.ru/cpp-beginners/thread306298.html
Помогите! нужно написать программу на "С". "Программа удаляет из строки слово с заданным номером!"(как объяснял преподаватель например 2 строки "скоро курсовая работа(20 символов в этой строке) пользователь задает удалить например 2 слово 6-14 символ, программа должна вывести скоро работа") Заранее спасибо.
C++ Расчетно-графическая работа Помогите пожалуйста. Необходимо написать расчетно-графическую работу которая будет состоять из: 1) заставки(любая картинка или несложная анимация) 2) и программы Задание по программе: построить кривые по заданному параметрическому представлению улитка Паскаля x=a*(cos(t))^2 + b*(cos(t)) y=b*cos(t)*sin(t) + b*(sin(t)); a>0, b>0, t принадлежит Рассмотреть... подробнее

Показать сообщение отдельно
Student100
3 / 3 / 2
Регистрация: 08.04.2011
Сообщений: 27
05.06.2011, 22:25  [ТС]     Бинарные деревья
ага и как решать подсказывает

Добавлено через 8 минут
файл TreeNode.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template< typename T > class Tree;
template< typename T >
class TreeNode
{
    friend class Tree< T >;
 
public:
    TreeNode();
    TreeNode(const T &);
private:
    T _data;
    TreeNode< T > *_left;
    TreeNode< T > *_right;
};
файл TreeNode.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "TreeNode.h"
template< typename T >
TreeNode< T >::TreeNode():
_left(0),
_right(0)
{
}
 
template< typename T >
TreeNode< T >::TreeNode(const T &data):
_data(data),
_left(0),
_right(0)
{
}
файл Tree.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "TreeNode.cpp"
template< typename T >
class Tree
{
public:
    Tree();
    ~Tree();
    void insert(const T &);
    void remove(const T &);
    void print() const;
private:
    TreeNode< T > *_root;
    void insert_helper(TreeNode< T > **, const T &);
    void remove_helper(TreeNode< T > **, const T &);
    void delete_helper(TreeNode< T > *); 
    void print_helper(TreeNode< T >*, int) const;
};
файл Tree.cpp
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
#include "Tree.h"
template< typename T >
Tree< T >::Tree():
_root(0)
{
}
 
template< typename T >
Tree< T >::~Tree()
{
    delete_helper(_root);
}
 
template< typename T >
void Tree< T >::delete_helper(TreeNode< T > *node)
{
    if (node != 0)
    {
        delete_helper(node->_left);
        delete_helper(node->_right);
 
        delete node;
    }
}
 
template< typename T >
void Tree< T >::insert(const T &data)
{
    insert_helper(&_root, data);
}
 
template< typename T >
void Tree< T >::insert_helper(TreeNode< T > **node, const T &data)
{
    if (*node == 0)
        *node = new TreeNode< T > (data);
    else
    {
        if ((*node)->_data > data)
            insert_helper(&((*node)->_left), data);
        else
        {
            if ((*node)->_data < data)
                insert_helper(&((*node)->_right), data);
        }
    }
}
 
template< typename T >
void Tree< T >::remove(const T &data)
{
    remove_helper(&_root, data);
}
 
template< typename T >
void Tree< T >::remove_helper(TreeNode< T > **node, const T &data)
{
    if ((*node)->_data == data)
    {
        TreeNode< T > *del_node = *node;
 
        if ((*node)->_left == 0 && (*node)->_right == 0)
        {
            *node = 0;
 
            delete del_node;
        }
        else
        {
            if ((*node)->_left == 0)
            {
                *node = (*node)->_right;
 
                delete del_node;
            }
            else
            {
                if ((*node)->_right == 0)
                {
                    *node = (*node)->_left;
 
                    delete del_node;
                }
                else
                {
                    TreeNode< T > *p = *node;
                    TreeNode< T > *i = (*node)->_left;
 
                    while (i->_right != 0)
                    {
                        p = i;
                        i = i->_right;
                    }
 
                    *node = i;
                    p->_right = i->_left;
                    i->_right = del_node->_right;
                    i->_left = p;
 
                    delete del_node;
                }
            }
        }
    }
    else
    {
        if ((*node)->_data > data)
            remove_helper(&((*node)->_left), data);
        else
        {
            if ((*node)->_data < data)
                remove_helper(&((*node)->_right), data);
        }
    }
}
 
template< typename T >
void Tree< T >::print() const
{
    print_helper(_root, 0);
}
 
template< typename T >
void Tree< T >::print_helper(TreeNode< T > *node, int spaces) const
{
    while (node != 0)
    {
        print_helper(node->_right, spaces + 5);
 
        for (int i = 1; i < spaces; ++i)
            std::cout << ' ';
 
        std::cout << node->_data << std::endl;
        node = node->_left;
        spaces += 5;
    }
}
файл bits.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//двоичные строки(сравнивать в лексикографическом порядке)
#include "string.h"
#include <iostream>
using namespace std;
template< typename T > class Tree;
class bits
{
    public:
        char* data; 
        bits();
        ~bits();
        friend istream& operator>>(istream &,bits &);//перегруженный оператор ввода
        friend ostream& operator<<(ostream &,bits &);//перегруженный оператор вывода
        friend bool operator>(const bits &,const bits &);
        friend bool operator<(const bits &,const bits &);
};
файл bits.cpp
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
#include "bits.h"
bits::bits()
{
    data=new char[20];
}
bits::~bits()
{
    delete data;
}
bool operator>(const bits &tmp1,const bits &tmp2)
{
    int k=0;
    k=strcmp(tmp1.data,tmp2.data);
    if(k>0) 
        return true;
    else 
        return false;
}
bool operator<(const bits &tmp1,const bits &tmp2)
{
    int k=0;
    k=strcmp(tmp1.data,tmp2.data);
    if(k<0) 
        return true;
    else 
        return false;
}
std::ostream& operator <<(std::ostream &out,bits &t)//Стандартный оператор вывода.
{
    out<<t.data;
    return out;
}
std::istream& operator >>(std::istream &in,bits &t)//Стандартный оператор ввода.
{
    in.sync();
    in.clear();
    while (in.peek()!=10||in.eof())
    {
        in>>t.data;
    }
    return in;
}
главный файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include "Tree.cpp"
#include "bits.cpp"
 
void main()
{
    Tree<bits> n;
    bits t;
    int i=0;
    for(i;i<3;i++)
    {
        cin>>t; 
        n.insert(t);//здесь он должен добавлять двоичные строки в дерево, но строка постоянно присваивается корню дерева((
    }
    n.print();
 
 
}
З.Ы. переделывал программу по другому

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