は、C言語のコードです:単独リンクされたリストの最後にノードを挿入する次のコードが機能しないのはなぜですか?
関数コール:
あなたはこのようながある場合にそうでなければ、(リンクネスを失うことになるnew_node
に、リストの最後の要素をリンクする必要があり
insert(&head,value);
void insert(struct node** headref,int value)
{
struct node* head = (*headref);
while(head!=NULL)
{
head= head->link;
}
struct node* new_node=(struct node*)malloc(sizeof(struct node));
new_node->data=value;
new_node->link=NULL;
head=new_node;
}
はどのようにリストは、新しい要素について知ることになっているのですか?新しい要素を指すようにリストの最後の項目の 'link'メンバーを設定する必要があります。 'head'がNULLになると、' link'メンバを設定する必要がある要素を失いました。より良いループ終了条件は 'while(head-> link!= NULL)'となります。 – enhzflep
推奨されていないので、頭を動かさないことをお勧めします!!これは、リンクされたリストの開始ノードを常に指し示すべきである参照ポインタです。代わりに他のポインタを使用してください。 –