リンクリストを作成しようとしていますが、何らかの理由で私の頭が正しく更新されません。ここで私が意図したとおりに動作していない私のコードの抜粋は以下のとおりです。構造体へのポインタを、関数によって返された構造体への別のポインタと同じに設定しますか?
typedef struct node {
int data;
struct node *next;
} * node;
node create_node(int data) {
node to_return = calloc(1, sizeof(struct node));
to_return->data = data;
to_return->next = NULL;
return to_return;
}
int insert(int data, node head) {
if (head == NULL) {
head = create_node(data);
}
.
.
.
}
return 1;
}
int main(int argc, char **argv) {
node head = NULL;
insert(1, head);
printf("head->data: %d", head->data);
}
この例では、私は()を挿入して使用してリンクされたリストの最初のノードを作成しようとしています。しかし、私はSEG障害が発生しています。つまり、create_node()によって返されたto_returnノードポインタが、insert()のノードヘッドに正しく設定されていません。私はここで何が欠けていますか?
EDIT:私はダブルチェックをして、ヘッドがインサート()に正しくセットされています。何らかの理由で変更が持続しない
私は申し訳ありませんが、私はまだです混乱している。 insert()のhead-> dataを印刷しようとしましたが、適切な値が得られましたが、プログラムが関数insert()を終了したときに変更が持続しない理由があります – YSA
そのノードが構造体。 – YSA
**決して** '' typedef'ポインタはありません! – Olaf