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

AVL - дерево, ошибка линковки <LNK2001> - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Зеркальное отображение вводимого числа http://www.cyberforum.ru/cpp-beginners/thread658156.html
Сам новичок в С++, только начал в инсте проходить. Дали задание, а я не могу понять, как его решить. Препод сказал через циклы какие-то, делением- сам ничего не понял, группа тоже, такие пироги....
C++ string в hex Здравствуйте, подскажите как string в hex перегнать ? http://www.cyberforum.ru/cpp-beginners/thread658155.html
Указатели на объект C++
Господа код компилируется и запускается , но после запуска выскакивает окно - прекращена работа программы , почему ? Что я делаю не так и как с этим бороться ? #include <cstdlib> #include...
C++ Ханнойские Башни
Доброго вечера суток: есть работающий код Ханойских Башнь, вот только все через стринг, как можно переделать через int и чтобы все было красивей в плане визуализации,ато явно что то не то выходит....
C++ Длинная арифметика http://www.cyberforum.ru/cpp-beginners/thread658141.html
Нужно реализовать сложение и умножение больших чисел. Есть идея, необходима помощь в реализации на C++. Собственно, идеи такие... Сумма: берём 2 массива, записываем их в строки, затем добавляем...
C++ Организовать цикл Вот приболел, а на лабы нужно задание, сижу и не понимаю, что от меня хотят и как это делать. http://f1.s.qip.ru/G1CCNmsq.png Попытался написать что-то типо этого // test_101.cpp : Defines the... подробнее

Показать сообщение отдельно
Almaz_KG
6 / 6 / 0
Регистрация: 15.05.2012
Сообщений: 105

AVL - дерево, ошибка линковки <LNK2001> - C++

25.09.2012, 23:49. Просмотров 572. Ответов 2
Метки (Все метки)

Здравствуйте форумчане!

У меня возникли некоторые трудности с линковщиком, помогите разобраться с ним, если не сложно
Пытаюсь реализовать AVL - дерево
Есть структура
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
struct Tree
{
public:
    Tree(int _value);
 
    unsigned int Height(const Tree* p)
    {
        return p?p->height : 0;
    }
 
    int BalanceFactor(const Tree *p)
    {
        if(p != NULL)
        {
            return Height(p->right) - Height(p->left);
        }
    }
 
    void FixHeight(Tree *p)
    {
        unsigned int height_left = Height(p->left);
        unsigned int height_right = Height(p->right);
        p->height = ((height_left > height_right) ? height_left : height_right) + 1;
    }
 
    Tree* Find(Tree* p, int value)
    {
        if(!p) 
            return 0;
        if(p->value == value)
            return p;
        if(p->value > value)
            Find(p->left, value);
        else if(p->value < value)
            Find(p->right, value);
 
        return 0;
    }
 
    Tree* RotateRight(Tree* p)
    {
        Tree *q = p->left;
        p->left = q->right;
        q->right = p;
        FixHeight(p);
        FixHeight(q);
 
        return q;
    }
 
    Tree* RotateLeft(Tree* p)
    {
        Tree *q = p->right;
        p->right = q->left;
        q->left = p;
        FixHeight(p);
        FixHeight(q);
 
        return q;
    }
 
    Tree* Balance(Tree* p)
    {
        FixHeight(p);
        if(BalanceFactor(p) == 2)
        {
            if( BalanceFactor(p->right) < 0)
                p->right = RotateRight(p->right);
            return RotateLeft(p);
        }
        if(BalanceFactor(p) == -2)
        {
            if(BalanceFactor(p->left) > 0 )
                p->left = RotateLeft(p->left);
            return RotateRight(p);
        }
        return p;
    }
 
    Tree* Insert(Tree* p, int value)
    {
        if(!p) return new Tree(value);
 
        if(value < p->value)
            p->left = Insert(p->left, value);
        else
            p->right = Insert(p->right, value);
 
        cout<<"Узел вставлен!\nРодитель "<<p->value<<endl;
        return Balance(p);
    }
 
    Tree* FindMin(Tree* p)
    {
        return p->left ? FindMin(p->left) : p;
    }
 
    Tree* RemoveMin(Tree* p)
    {
        if(p->left == 0)
            return p->right;
        p->left = RemoveMin(p->left);
        
        return Balance(p);
    }
 
    Tree* Remove(Tree* p, int value)
    {
        if(!p) return 0;
        if(value < p->value)
            p->left = Remove(p->left, value);
        else if(value > p->value)
            p->right = Remove(p->right, value);
        else
        {
            Tree* left = p->left;
            Tree* right = p->right;
            
            delete p;
            if(!right) return left;
            Tree* min = FindMin(right);
            min->right = RemoveMin(right);
            min->left = left;
            
            return Balance(min);
        }
        return Balance(p);
    }
 
private:
    Tree *left;
    Tree *right;
    int value;
    unsigned int height;
};
Пытаюсь протестировать получившуюся творение
вот таким способом
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
    Tree myTree(5);
 
    myTree.Insert(&myTree, 4);
    myTree.Insert(&myTree, 8);
    myTree.Insert(&myTree, 6);
    myTree.Insert(&myTree, 7);
    myTree.Insert(&myTree, 3);
    myTree.Insert(&myTree, 1);
 
}
На что мне линковщик очень негодует, как мне его успокоить?
0
Миниатюры
AVL - дерево, ошибка линковки <LNK2001>  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru