プログラムはリストの値を意図したとおりに出力しません。それはメモリアドレスであるべきものを印刷します。私は解決策を見つけるのを試みてきたが、これまで役に立たなかった。私はいくつかの助けに感謝します。関数の引数としてリンクされたリスト
#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 = 1;
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;
head->next->next->next->next = NULL;
print_list(&head);
system("pause");
}
void print_list(node_t * head) {
node_t * current = head;
while (current != NULL) {
printf("%d\n", current->val);
current = current->next;
}
}
上記の問題は入力のおかげで解決しました。どうもありがとうございました!しかし、新しい問題が発生しました。リストに新しい要素を追加したいのですが、私はいくつかのコード行を追加しました。残念ながら、望む結果は印刷されず、プログラムは突然終了します。あなたの関数void print_list(node_t * head);
はタイプnode_t *
のパラメータを期待していますがタイプnode_t **
のパラメータを渡している
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\n", current->next->val);
system("pause");
}
関数 'print_list'は' node_t * '型の引数を期待していますが、' node_t ** 'を渡しています。 &head); 'を' print_list(head);に置き換えてください –
すべてのコンパイラの警告を有効にし、警告をエラーとして扱います –
ああ、それは単純でした。私には大変なことがあります。 – Leet