私はちょうど何時間も問題を抱え、自分のコードがどこで壊れているのか探していました。私はリンクされたリストを削除する方法を知っているが、何かが動作しません。CでリンクされたLIstを削除する
まず、int型と2 struct * nextおよび* prevのdataypeを持つ非常に単純な構造体です。
struct _list_{
struct _list_ *next;
struct _list_ *prev;
float distance;
}
ここで私はpush_front関数を作成しており、うまく動作します。私は私が探している結果を得る。しかし、今私はpop_front関数を作成して何かが欠落しています。
この関数は距離を返し、リンクリストからそのリストを削除する必要がありますが、それを行うことはできません。ここ
は、私はあなたに感謝し、すべてのヘルプは素晴らしいことだ
int pop_front(list** header)
{
float number = (*header)->data;
list *head = *header;
list *remove = head;
// This should check if the pointer is pointing at the first element
while (head->prev != NULL) {
head = head->prev;
}
if (head) {
head = head->next;
free(remove);
remove = head;
remove->prev = NULL;
//if i remove the code below then i get this error
//*** Error in `./double_ended_queue.out': double free or
//corruption (fasttop): 0x0000000001d5a050 ***
//Pop up: 3 pointer: 3 Aborted (core dumped)
*header = *remove;
//And with this code i get a Segmentation fault (core dumped
return number;
}
return 0;
}
を書いたコードです。
P.S.リンクされたリストのすべての質問をここでチェックし、役に立たなかった。
「delete」は予約済みのキーワードです。名前を変更してください。 – learner
これはCですし、 'delete'という名前の変数を使うこともできますが(私はそれはお勧めしませんが)、そうでないといけません。いずれにせよ、*両方の言語タグを使うのは間違っています。 – usr2564301
sryがC++タグ – twistedhat