最後一個printf調用(printf(「%d \ n」,current-> val);)將不會被執行。第一個printf函數的結果出現後,我得到錯誤「program.exe已停止工作」。我希望得到一些幫助。帶鏈接列表的內存處理錯誤
#include <stdio.h>
typedef struct node
{
int val;
struct node * next;
} node_t;
void print_list(node_t * head);
void main()
{
node_t * head = NULL;
head = malloc(sizeof(node_t));
if (head == NULL)
return 1;
head->val = 3;
head->next = malloc(sizeof(node_t));
head->next->val = 2;
head->next->next = malloc(sizeof(node_t));
head->next->next->val = 3;
head->next->next->next = malloc(sizeof(node_t));
head->next->next->next->val = 18;
print_list(head);
head->next->next->next->next = malloc(sizeof(node_t));
head->next->next->next->next->val = 5556;
head->next->next->next->next->next = NULL;
node_t * current = head;
while (current->next != NULL)
{
current = current->next;
}
current->next = malloc(sizeof(node_t));
current->next->val = 32;
current->next->next = NULL;
printf("%d", current->next->val);
system("pause");
}
void print_list(node_t * head) {
node_t * current = head;
while (current != NULL) {
printf("%d\n", current->val);
current = current->next;
}
}
你確定print_list可以工作嗎?自print_list被調用時,最後一個節點不會指向null。所以,打印邏輯可能會失敗。 –
使用節點插入和刪除功能。這樣做是管理鏈表的追求方式。 – sjsam
謝謝你的提示,夥計們!問題解決了。 – Leet