我在鏈接列表中遇到了一些問題。所以基本上用戶只需輸入值,這些值將被添加到鏈接列表中,直到用戶輸入-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數字。問題在於我的print listNode部分?
在此先感謝。
如果遇到-1,則將* next *節點設置爲NULL。它的'當前'數字值不變。你應該在存儲你的號碼之前移動創建一個新的節點*,而不是之後。 – usr2564301