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

Б-дерево(B-tree) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
hazak
 Аватар для hazak
0 / 0 / 0
Регистрация: 12.12.2009
Сообщений: 7
12.01.2010, 00:52     Б-дерево(B-tree) #1
Доброе время суток всем, колдую над кодом уже который день. Вроде Б дерево создал, теперь нужно вывести на екран имя, которое начинается например на "a" или на "al" или на "tr" т.е. все ветки ниже последней буквы введенного слова, ну как в гугле пишеш пару букв а он тебе выдает варианты. У меня в коде может и есть ошибки, но в общем код работает. прошу помочь кто чем может, огромное спасибо.

P.S. И еще к каждому имени нада прикрепить номер тогда получится телефонная книга. Я думаю к каждому имени к последней букве прикрепить через указатель номер.Как думаете получится? Или у кого есть идеи?

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
#include<iostream>
using namespace std;
class list;
class node
{
public:
    char data;
    int count;
    node* next[25];
    node(void)
    {
        for(int k=0;k<=24;k++)
            next[k]=NULL;
        count=0;
    }
};
//zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
class list
{
public:
    list(void)
    {
        head =new node; 
        head->data=0;
        head->count=0;
    }
    void insertWord(char word[]);
    void displayword(char word[]);
private:
    node* head;
};
//zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
void list::displayword(char word[])
{
    node* currnode=head;
    for(int b=0;b<strlen(word);b++)
    for(int i=0;i<25;i++)
    {
        if(currnode->next[i]!=NULL)//rabotaet
        {
          if(currnode->next[i]->data==word[b])
          { 
              cout<<currnode->next[i]->data;
              currnode=currnode->next[i];
              break;
          }
        }
    }
    cout<<endl;
    //zdes' nujno napisat' kod, chto by vydaval na ekran vse vetki nije poslednei bukvy dannogo slova(word)
}
//zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
void list::insertWord(char word[])
{
    node* currnode=head;
for(int b=0;b<strlen(word);b++)
{
  bool done=false;
  for(int i=0;i<25;i++)
  {
      if(currnode->next[i]!=NULL)//rabotaet
      {
          if(currnode->next[i]->data==word[b])
          {
                currnode->next[i]->count++;
                currnode=currnode->next[i];
                cout<<currnode->data<<" : "<<currnode->count<<endl;//proverka
                done=true;
                break;
          }
      }
  }
  if(done!=true)
  {
      for(int j=0;j<25;j++)
      {
          if(currnode->next[j]==NULL)//rabotaet
          {
              node* newnode= new node;
              newnode->data=word[b];
              newnode->count++;
              currnode->next[j]=newnode;
              cout<<newnode->data<<" : "<<newnode->count<<endl;//proverka
              currnode=currnode->next[j];
              break;
          }
      }
  }
  
}
//zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
 
}
int main(void)
{
    list name;  
    name.insertWord("assoc");
    name.insertWord("all");
    name.insertWord("algo");
    name.insertWord("also");
    name.insertWord("tree");
    name.insertWord("trie");
    name.displayword("al");
    getchar();
    return 0;
}
Пишу через транслит, не обращайте внимания на ошибки.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2010, 00:52     Б-дерево(B-tree)
Посмотрите здесь:

C++ Tree, set, map etc.
C++ RB tree удаление узла
Напишите программу, которая бы читала дерево в формате (а) и затем печатала бы это дерево в формате (б). C++
C++ объекты класса TREE
C++ Добавление узла и т.д. в B-tree
C++ Бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой
Splay-tree (написать программу, которая будет искать в файле сущности (целые числа) и заносить их в дерево) C++
C++ Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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