У меня была проблема со связанным списком. Таким образом, в основном пользователь будет просто вводить значения, и эти значения будут добавлены в связанный список, пока пользователь не введет -1. Вот мой код:C список списка программирования, показывающий последний отрицательный элемент
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
typedef struct node
{
int num;
struct node *next;
}ListNode;
int main() {
int n = 0;
ListNode *newNode = NULL, *head = NULL;
newNode = malloc(sizeof(ListNode));
head = newNode;
printf("Enter a list of numbers, terminated by the value -1: ");
do {
scanf("%d", &n);
if (n == -1) {
newNode->next = NULL;
break;
}
else {
newNode->num = n;
newNode->next = malloc(sizeof(ListNode));
newNode = newNode->next;
}
} while (n != -1);
newNode = head;
while (newNode != NULL)
{
printf("%d ", newNode->num);
newNode = newNode->next;
}
return 0;
}
Так скажем, я вошел 1 2 3 4 -1
. Ожидаемый результат должен быть 1 2 3 4
. Тем не менее, я получаю 1 2 3 4 -842150451
. Интересно, почему существует номер -ve. Проблема заключается в моей части списка printNode?
Заранее спасибо.
Вы установили * следующий * узел в NULL, если вы столкнулись с -1. Его текущее значение 'num' не изменяется. Вы должны перемещать создание нового узла * до * хранения ваших номеров, а не после. – usr2564301