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

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

Войти
Регистрация
Восстановить пароль
 
Almaz_KG
6 / 6 / 0
Регистрация: 15.05.2012
Сообщений: 105
#1

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

25.09.2012, 23:49. Просмотров 570. Ответов 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);
 
}
На что мне линковщик очень негодует, как мне его успокоить?
Миниатюры
AVL - дерево, ошибка линковки <LNK2001>  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2012, 23:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос AVL - дерево, ошибка линковки <LNK2001> (C++):

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

Ошибка компиляции. AVL-дерево - C++
#include &lt;iostream&gt; struct node { int key; node* left; node* right; }; class avl_tree { private:

Определить, является ли дерево AVL деревом - C++
int s, kol, sr, a; void avl(PNode ptr) { int h1 = 0, h2 = 0, i = 0; if ((ptr-&gt;Left == NULL) &amp;&amp; (ptr-&gt;Right == NULL)) { ...

ошибка lnk2001 - C++
создал я класс со статик в файле .h и при использовании членов этого класса,а именно переменных,он выдает ошибку lnk2001.В чем причина?

Ошибка линковки - C++
Ругается на: 1&gt;Generating Code... 1&gt;Skipping... (no relevant changes detected) 1&gt;WinMain.cpp 1&gt;Linking... 1&gt;Parser.obj : error...

Ошибка линковки - C++
Как исправить эту ошибку линковки? LRESULT CALLBACK WndProc(HWND, UINT , WPARAM, LPARAM); // Прототип функции WndProc BOOL...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
25.09.2012, 23:51 #2
у конструктора нет тела, допишите
Almaz_KG
6 / 6 / 0
Регистрация: 15.05.2012
Сообщений: 105
25.09.2012, 23:53  [ТС] #3
Цитата Сообщение от I.M. Посмотреть сообщение
у конструктора нет тела, допишите
Блин - все просто=))

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

Ошибка линковки - C++
Всем привет. Столкнулся со следующей проблемой. в программе 9 файлов. 4 .h, 4 .cpp и main.cpp. взаимодействуют между собой вот так - 2, 3,...

Ошибка линковки - C++
Здравствуйте. Создаю многофайловую программу. При компиляции всё замечательно, а потом возникает следующая ошибка: Error 2 error...

Ошибка линковки - C++
Всем привет! Пишу программу на С++ в среде VS2008, чудеса происходят, в ходе редактирования кода и его дополнения, соответственно...

ошибка линковки - C++
int main() { return 0; } делаю так: в MSVC++ создаю проект консоли, выбираю пустой проект, затем создаю файл кода с++, пишу эти...


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

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

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