Реализую дерево двоичного поиска на C++. У меня есть следующий код для добавления записи в дерево:
void tree::add(int n)
{
int found;
leaf *t,*parent;
findparent(n,found,parent);
if(found==YES)
cout<<"\nSuch a Node Exists";
else
{
t=new leaf;
t->data=n;
t->l=NULL;
t->r=NULL;
if(parent==NULL)
p=t;
else
parent->data > n ? parent->l=t : parent->r=t;
}
}
В моем main я использую map для хранения значений, считанных из текстового файла как целое число. Теперь, когда я передаю значение в функцию add, программа завершает работу.
int main()
{
tree t;
map word;
map::iterator count;
string str;
int num;
string space ="";
while((str=value(cin))!=space )
{
num = atoi(str.c_str());
++word[num];
}
int size = (int) word.size();
int data[size];
int x = 0;
for(count = word.begin(); count!=word.end(); ++count){
data[x] = (*count).first;
x = x+1;
}
for (int iter = 0; iter
Что я делаю здесь: я конвертирую пользовательский ввод в целые числа с помощью atoi, а затем добавляю их в map. Затем я получаю размер карты и использую его для заполнения массива элементами. Теперь, когда я выполняю итерации по массиву и пытаюсь передать элементы массива в дерево с помощью функции add, программа завершает работу. Программа работает нормально, когда я пытаюсь добавить фиксированный элемент массива. Например:
int data[] = {6,7,8,9};
если я имею этот фиксированный массив в main и передаю элементы в add, он работает нормально, это заставляет меня думать, что нет проблем с методом add. Пожалуйста, помогите мне найти проблему, я запутался
Pastebin Ссылка на всю программу: http://pastebin.com/SWqTccJf