Я пытаюсь сделать простую программу, добавив узел в конец списка ссылок:Почему я вижу ошибку времени компиляции для ниже?
/*Insert Node at the end of a linked list
head pointer input could be NULL as well for empty list
Node is defined as
struct Node
{
int data;
struct Node *next;
}
*/
Node* Insert(Node *head,int data)
{
if(head){
Node *curr_node=head;
while(curr_node->next)
curr_node=curr_node->next;
}
Node *new_node=(Node *)calloc(1,sizeof(Node));
new_node->data=data;
new_node->next=NULL;
if(head)
curr_node->next=new_node;
else
head=new_node;
return head;
}
/* the main function calls it*/
, когда я компилирую, я вижу следующее сообщение об ошибке:
В функции «Node * Вставить (Node *, INT) ': solution.cc:59:13: ошибка: 'curr_node' не был объявлен в этой области curr_node-> следующая = new_node
почему это говорит curr_node не объявлена, когда он на самом деле объявленного в начале. Что мне здесь не хватает?
'curr_node' только объявлена внутри' if'-блока – Kninnug
И кстати, нет 'Node', только' структура Node '. В следующий раз попробуйте отправить * реальный *, [минимальный, ** полный **, проверяемый пример] (https://stackoverflow.com/help/mcve), который воспроизводит вашу проблему. – WhozCraig
Компилятор не сказал «не объявлен», он сказал * «в этой области» *. –