struct Node
{
int data;
struct Node *next;
};
Node *AppendNode(Node *head, int data) {
Node *ptr = head;
struct Node node = {data, ptr->next};
head->next = &node;
return head;
}
void PrintNode(Node *head) {
Node *ptr = head;
while (ptr != 0) {
printf("%d ", ptr->data);
ptr = ptr->next;
}
}
int main() {
Node node = {1 , 0};
Node* head = &node;
head = AppendNode(head, 2);
PrintNode(head);
return 0;
}
Выход (1,3830) вместо (1,2). Проверьте отладчики. Я видел изменения значения узла от 2 до 3830 на этом этапе ptr = ptr->next
; внутри PrintNode. Извините, я новичок в C++.Ошибка печати связанного списка. Что не так?
Функция AppendNode неверна. Вы берете адрес локальной переменной. Вместо этого переменная узла должна быть указателем на узел, созданный в куче через new. –