最後の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