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

Бинарное дерево с шаблоном - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Шаблонные методы шаблонного класса в cpp-файле http://www.cyberforum.ru/cpp-beginners/thread1226869.html
Есть класс-шаблон Map. В нем обьявленны несколько шаблонных методов forEach. template<typename K, typename V> class Map : public Object { public: /**/ template<typename A, typename R> R& forEach(A& arg, R& badResult, R&(*func)(Entry<K, V>*, A&)); template<typename A>
C++ Общий параметр для всех классов и создание объекта по известному адресу Разработайте и реализуйте класс counted_ptr<T>, владеющий указателем на объект типа T, и указатель, подсчитывающий количество ссылок (переменная типа int), общий для всех указателей, с подсчетом ссылок на один и тот же объект типа T. Счетчик ссылок должен содержать количество указателей, ссылающихся на данный объект типа т. Конструктор класса counted_ptr должен размещать в свободной памяти... http://www.cyberforum.ru/cpp-beginners/thread1226868.html
C++ Реализовать проверку введенный значений
Мне нужно, чтобы пользователь мог вводить только числа (например, в калькуляторе), а если вводится буква, выводится сообщение "Введите число, а не букву". Как это сделать? Подскажите, пожалуйста.
Нужно исправить код C++
я новичок в с++ помогите исправить код, если можно покажите код в исправном виде мне сказали так, но я сам новичок и не понимаю:wall: Необходимо отдельно определить каждую функцию. А далее уже вызывать функцию там, где это необходимо. Т.е. нельзя определять одну функцию внутри другой. Т.е. определите функцию SearchFiles() вне функции main(). вот ошибка C:\Program Files (x86)\Microsoft...
C++ Дописать подсчет среднего арифметического http://www.cyberforum.ru/cpp-beginners/thread1226833.html
дописать подсчет среднего арифметического, и куда ее вставить в этой программе?? ? { int _w,j; c.n++; _w=car->ADC((DoubleSlot) SlotNumber, (Channel) i_);
C++ Как подключить подпрограмму к программе? Как перейти из main в nemain? #include<iostream> #include<conio.h> using namespace std; int main() { setlocale (LC_ALL , "Russian"); подробнее

Показать сообщение отдельно
azbest
 Аватар для azbest
36 / 36 / 7
Регистрация: 12.03.2013
Сообщений: 141
14.07.2014, 10:58  [ТС]     Бинарное дерево с шаблоном
Цитата Сообщение от castaway Посмотреть сообщение
Нам надо было догадаться что их там два?
в куске кода предоставленом в первом посте было указано два метода size().

а что еще Вы хотите знать?)
под спойлером весь код загловочного файла
Кликните здесь для просмотра всего текста

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
#ifndef BSTREE_H_INCLUDED
#define BSTREE_H_INCLUDED
//#define Value int
 
#include <queue>
 
template <typename Key, typename Value>
 
struct Node {
private:
    Key key;        // ключ
    Value val;      // значение
    Node* left;     // указатель на левое поддерево
    Node* right;    // указатель на правое поддерево
    int N;          // количество эментов в поддереве
public:
    Node(Key key, Value val, int N) {
        this.key = key; this.val = val; this.N = N;
    }
};
 
template <typename Key, typename Value>
class BST {
private:
    Node<Key, Value> root;
 
    int size(Node<Key, Value>* x) {
        return (x == NULL)?0:x->N;
    }
 
    Value get(Node<Key, Value> x, Key key) {
        if (x == NULL) return NULL;
        int cmp = compareTo(key, x.key);
        if      (cmp < 0) return get(x.left, key);
        else if (cmp > 0) return get(x.right, key);
        else return x.val;
    }
 
    Node<Key, Value> put(Node<Key, Value> x, Key key, Value val){
        if (x == NULL) return new Node<Key, Value>(key, val, 1);
        int cmp = compareTo(key, x.key);
        if      (cmp < 0) x.left = put(x.left, key, val);
        else if (cmp > 0) x.right = put(x.right, key, val);
        else x.val = val;
        x.N = size(x.left) + size(x.right) + 1;
        return x;
    }
 
    Node<Key, Value> floor(Node<Key, Value> x, Key key) {
        if (x == NULL) return NULL;
        int cmp = compareTo(key, x.key);
        if (cmp == 0) return x;
        if (cmp < 0) return floor(x.left, key);
        Node<Key, Value> t = floor(x.right, key);
        if (t != NULL) return t;
        else           return x;
    }
 
    int rank(Key key, Node<Key, Value> x) {
        if (x == NULL) return 0;
        int cmp = compareTo(key, x.key);
        if      (cmp < 0) return rank(key, x.left);
        else if (cmp > 0) return 1 + size(x.left) + rank(key, x.right);
        else return size(x.left);
    }
 
    void inorder(Node<Key, Value> x, queue<Key> q) {
        if (x == NULL) return;
        inorder(x.left, q);
        q.enqueue(x.key);
        inorder(x.right, q);
    }
public:
    BST() {
        root = NULL;
    }
 
    int size() {
        return size(&root);
    }
 
    Value get(Key key) {
        return get(root, key);
    }
 
    void put(Key key, Value val) {
        put(root, key, val);
    }
 
    Key min() {
        if (root == NULL) return NULL;
        Node<Key, Value> tmp = root;
        while (tmp.left != NULL) tmp = tmp.left;
        return tmp.key;
    }
 
    Key max() {
        if (root == NULL) return NULL;
        Node<Key, Value> tmp = root;
        while (tmp.right != NULL) tmp = tmp.right;
        return tmp.key;
    }
 
    Key floor(Key key) {
        Node<Key, Value> x = floor(root, key);
        if (x == NULL) return NULL;
        return x.key;
    }
 
    int rank(Key key) {
        return rank(key, root);
    }
 
    queue<Key> keys() {
        queue<Key> q = new queue<Key>();
        inorder(root, q);
        return q;
    }
};
 
#endif // BSTREE_H_INCLUDED
 
Текущее время: 07:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru