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

Дерево - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перенос битов http://www.cyberforum.ru/cpp-beginners/thread288608.html
Ввести число, перенести все еденичные биты в середину разрядной сетки.
C++ typedef struct .... Здравствуейте. Обьясните пожалуйсто новичку что означает этот код. typedef struct { long num_servers; long data_size; char* data; }SSQ_BATCH_REPLY,*PSSQ_BATCH_REPLY; http://www.cyberforum.ru/cpp-beginners/thread288590.html
C++ Программка С++ Proc
Описать функцию Power2(A, N) вещественного типа, находящую вели- чину AN(N-это степень A) (A — вещественный, N — целый параметр) по следующим форму- лам: A0(0-степень A) = 1; AN(N-степень A) = A•A•…•A (N сомножителей), если N > 0; AN(N-степень A)= 1/(A•A•…•A) (|N| сомножителей), если N < 0. С помощью этой функции найти AK, AL, AM(K,L,M-степени A), если...
Работа со словами в строке. C++
Здравствуйте. Помогите, пожалуйста, с решением. 1) Вводим предложение. Нужно вывести каждое слово с новой строки. Разделителями между словами могут быть: пробел, ‘ , /, , . и т.д. Цифры выводить не нужно. Программу вроде написал. #include <iostream.h> #include <string.h> void main () { char s; cout<<"vvedite text"<<endl; cin.getline(s,149);
C++ Задание про слова http://www.cyberforum.ru/cpp-beginners/thread288554.html
Здравствуйте,я в си новичок.Не поможете мне решить задачу(написать код)? "Дано ошибочно написанное слово "рпроцессо". Путем перемещения его букв получить слово "процессор"
C++ прога, которая по нажатой клавише выводит ascii - код символа это клавиши или scan - код самой клавиши. написать программу, которая по нажатой клавише выводит ascii - код символа этой клавиши или scan - код самой клавиши. осуществите вывод в 8-й, 10-й и 16-й системах счисления. код с++. заранее спасибо!!! подробнее

Показать сообщение отдельно
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
04.05.2011, 18:48     Дерево
писал когда то давно, может пригодится
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
#ifndef TREEITEM_H
#define TREEITEM_H
#pragma once
 
#include <vector>
 
using namespace std;
 
typedef int Index;
 
template <typename TYPE> class TreeItem
{
    template <typename TYPE> friend class Tree;
private:
    Index index; /*Индекс */
    TYPE value; /*Содержимое*/
    TreeItem<TYPE> *parent; /*CCылка на предка */
    vector<TreeItem<TYPE>*> child; /*CCылки на детей */
 
public:
    TreeItem<TYPE>(const Index &val);
    /* */
 
    TreeItem<TYPE>(const TreeItem<TYPE> &Q);
    /*Конструктор копии*/
 
    TreeItem<TYPE> operator=(const TreeItem<TYPE> &Q);
    /*Equal */
    
    Index children();
    /*Возвращает количество детей */
 
    TreeItem<TYPE>* operator[](const Index &index); 
    /*Возвращает ссылку на i-ого сына, i = index*/
    
    TreeItem<TYPE>* getParent(); 
    /*Возвращает ссылку на предка*/
 
    TYPE getValue ();
    /*Возвращает содержиомое элемента дерева*/
 
    void setValue (const TYPE &item);
    /*Задаёт содержимое элемента дерева. Value = item. Не написано!!!*/
 
    TYPE getIndex ();
    /*Возвращает индекс элемента дерева*/
 
    ~TreeItem() {
        delete this;
    }
    
};
 
template <typename TYPE> TreeItem<TYPE>::TreeItem<TYPE>(const Index &val) {
        parent = 0;
        index = val;
        value = 0;
}
 
template <typename TYPE> TreeItem<TYPE>::TreeItem<TYPE>(const TreeItem<TYPE> &Q) {
        index = Q.index;
        value = Q.value;
        parent = Q.parent;
        child = Q.child;
}
 
template <typename TYPE> Index TreeItem<TYPE>::children() {
        //Возвращает количество сыновей
        return child.size();
}
 
template <typename TYPE> TreeItem<TYPE>* TreeItem<TYPE>::operator[](const Index &index) {
        //Возвращает ссылку на i-ого сына, i = index
        return child[index];
}
 
template <typename TYPE> TreeItem<TYPE>* TreeItem<TYPE>::getParent() {
        return parent;
}
 
template <typename TYPE> TYPE TreeItem<TYPE>::getValue() {
    return value;
    
}
 
template <typename TYPE> TYPE TreeItem<TYPE>::getIndex() {
    return index;
    
}
 
/*template <typename TYPE> TreeItem TreeItem::operator=(const TreeItem<TYPE> &Q) {
        TreeItem tmp(Q.value);
        //value = Q.value;
        //parent = Q.parent;
        tmp.numOfChilds = Q.numOfChilds;
        tmp.child = Q.child;
 
        return tmp;
}*/
 
#endif
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
#ifndef TREE_H
#define TREE_H
#pragma once
 
#include "TreeItem.h"
#include <vector>
 
using namespace std;
 
typedef int Index;
 
template <typename TYPE> class Tree
{
    
public:
    Tree();
 
    void add(const Index &index);
    /*Добавляет сына к предку с индексом val */
 
    TreeItem<TYPE>& operator[](const Index &index);
    /*Возвращает ссылку на TreeItem с номером index */
 
    Index size();
    /*Возвращает размер дерева */
 
    bool empty();
    /*TRUE if enpty  */
 
    void clear ();
    /*Удаляет все элементы дерева, КРОМЕ КОРНЯ! */
 
    ~Tree();
    /* */
 
private:
    vector<TreeItem<TYPE>*> tree;
    /* */
};
 
template <typename TYPE> Tree<TYPE>::Tree() { 
        TreeItem<TYPE> *tmp = new TreeItem<TYPE>(0);
        tree.push_back(tmp);
}
 
template <typename TYPE> void Tree<TYPE>::add(const Index &index) {
        //TreeItem tmp(tree.size());
        TreeItem<TYPE> *tmp = new TreeItem<TYPE>(tree.size());
        //tree[val].child.push_back(&tmp);
        tree.push_back(tmp); //
        tree[tree.size() - 1]->parent = tree[index];
        tree[index]->child.push_back(tree[tree.size() - 1]);
        //(tree[index]->)++;
        
}
 
template <typename TYPE> TreeItem<TYPE>& Tree<TYPE>::operator[](const Index &index) {
        return *tree[index]; 
}
 
template <typename TYPE> Index Tree<TYPE>::size() {
        return tree.size();
}
 
template <typename TYPE> bool Tree<TYPE>::empty() {
        return (tree.size() == 0);
}
 
template <typename TYPE> void Tree<TYPE>::clear () {
    tree.erase((tree.begin() + 1), tree.end());
}
 
template <typename TYPE> Tree<TYPE>::~Tree() {
        clear();
}
 
#endif
Добавлено через 5 минут
только в привате вектор лежит. Некоторым этом может не понравится, можно легко переделать чтобы была только ссылка на корень и выпилить оператор[], вот тогда будет полноценное дерево
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru