Я пытаюсь прочитать двоичное дерево в моей программе, используя следующую функцию, которую я написал.Чтение двоичного дерева с консоли в c
void readTree(struct Dnode *root)
{
struct Dnode *temp;
struct Dnode *input;
char initData;
scanf(" %c",&initData);
input=CreateNode(initData);
if(initData==122){
printf("Leaf\n");
return;
}
else {
root=input;
temp=root;
printf("going to left of %c\n",initData);
readTree(root->lLink);
printf("going to right of %c\n",initData);
readTree(root->rLink);
}
}
Все работает отлично, за исключением того факта, что в основном дерево не существует. Вот моя основная программа:
int main()
{
int n=0;
struct Dnode *root=NULL;
printf("Enter the tree as it asks. Enter z whenever there is no children :\n");
readTree(root);
printf("%c",root->data);
printf("In main");
return;
}
Программа внезапно падает после ввода дерева. Пожалуйста, помогите мне.
Помните, что в Аргументы C передаются * по значению *, т.е. скопированы, и внутри функции эти аргументы подобны любой другой локальной переменной и выходят за пределы области при возврате функции, и все изменения в аргументы будут потеряны. Пожалуйста, найдите * emulating pass по ссылке в c *. Проблема была бы очень очевидна, если бы вы потратили пару минут в отладчике, перешагнувшем ваш код. –
Ваша программа читает с клавиатуры (или любого другого стандартного устройства ввода, которое вы используете), а не с консоли (или любого другого стандартного устройства вывода, которое вы используете). –
вход? ожидаемый результат? фактический выход? что такое 'struct Dnode'? что такое 'CreateNode'? – 4386427