私は初心者のプログラマーです。一週間前に私はリンクリストに紹介されましたが、私はまだこれを回避するために苦労しています。Cプログラミング:リンクリストの最後の要素をポップする方法は?
現在、リンクリストから最後の要素を削除するのに役立つ関数を作成しようとしています。私はここで何が間違っているのか、いくつかの説明に感謝します。ご意見ありがとうございます。
私はここで、現在の構造体に
に触れたり、変更することはできませんよ、私の構造体である:
typedef struct node {
ElemType val;
struct node *next;
} NODE;
struct list_struct {
NODE *front;
NODE *back;
};
そしてHERESに私の現在のコード:リストが空の場合
、我々は何もしないし、任意の値 を返します。リストの最後の要素が削除され、 の値が返されます。
ElemType lst_pop_back(LIST *l) {
NODE * p = l->front;
NODE * trail = l->front;
if(p == NULL) return 0;
if(lst_len(l) == 1){
free(p);
l->front = NULL;
l->back = NULL;
}
else{
p=p->next;
while(p != NULL){
if(p->next == NULL) free(p);
trail = trail->next;
p=p->next;
}
trail= trail->next;
trail->next= NULL;
}
return 0;
}
私はMAC上のXcodeを使用していると私が得るエラーは次のとおりです。スレッド1:EXC_ACCESS(コード= 1、アドレス= 0x8の)
*私は私がここで間違って何をやっているいくつかの説明をいただければ幸いです* - なぜあなたはあなたが何か間違ったことをやっていると思いますか。?エラー/セグメンテーション/予期しない結果が表示されていますか? –
これで、見出しを二重リンクリストに変更しました。だから今私は元の "トピックから外れた"コメントに戻ります。あなたが単独でリンクされたリストだけを持っているなら、 'list'structの' back'メンバのポイントは何ですか? – John3136
また、単独リンクされたリストを作成するときに間違っているようです。だから、ソースコードのその部分を追加してください。 – mash