Дерево C ++ с несколькими дочерними элементами для обратного поиска по номеру телефона

Я пытаюсь написать программу для обратного поиска телефонных номеров (пользователь дает номер, а программа печатает соответствующее лицо + другие номера, которые ему принадлежат). Теперь я сохранил данные людей в связанном списке и пытаюсь построить дерево.

Каждый элемент дерева будет сохранять указатель на данные человека, индекс (который соответствует части телефонного номера, например, если номер начинается с «0», индекс первого дочернего узла корня равен «0») и вектор указателей на его детей.

Пока я могу сохранить первое заданное число в дереве, но, похоже, возникают проблемы при попытке сохранить более одного числа в дереве. Может быть, проблема с указателями на дочерние узлы, но я не уверен, что там. Вот упомянутая часть кода:

class Tree {

public:

Datensatz *data; //data stored in node
char number; //index of node - part of a telephone number
Tree* wurzel; //root

vector<Tree*> nextEls; //vector of children of nodeTree(int zahl);/*
div. functions
*/

void add(vector<char>); //called to add telephone number to tree

};void Tree::hinzufRek(vector<char> telNum)
{
Tree *aktEl = new Tree(); //latest node
aktEl=this->wurzel; //starts with root

int check = 0;

for (int i=0; i<telNum(); i++) {

char h = telNum(i);

if(aktEl->nextEls.size()!=0){
int j;
for (j = 0; j<aktEl->nextEls.size(); j++) {
if (h == aktEl->nextEls[j]->number) { //if latest number already exists in node children...
aktEl = aktEl->nextEls[j];
check = 1;
break;
}
}
if (check == 0) {
aktEl->nextEls.push_back(new Tree(h));
aktEl = aktEl->nextEls[j];
}
}
else { //if there are no current children to latest node
aktEl->nextEls.push_back(new Tree(h));
aktEl = aktEl->nextEls[0];
}
}
}
}

Кроме того, я подумал, что было бы неплохо удалить объект Tree * aktEl в конце функции, но это приводит только к действительно странным результатам. Я не уверен, что приведенный выше код очень ясен или его легко понять, но я надеюсь, что один из вас сможет мне помочь …

Может быть, я просто что-то наблюдаю …

Заранее спасибо!

roboneko42

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]