Ich steckte einfach mit dem Problem paar Stunden, versuchen zu finden, wo mein Code bricht. Ich weiß, wie man die verknüpfte Liste löscht, aber etwas funktioniert nicht.Löschen verknüpfter LIst in C
Zuerst ist es eine sehr einfache Struktur mit einem Dataype von int und 2 struct * next und * prev.
struct _list_{
struct _list_ *next;
struct _list_ *prev;
float distance;
}
Jetzt mache ich eine push_front-Funktion und es funktioniert super. Ich bekomme das Ergebnis, nach dem ich suche. Aber jetzt mache ich pop_front Funktion und etwas fehlt.
Die Funktion sollte die Entfernung zurückgeben und dann diese Liste aus der verknüpften Liste entfernen, aber ich kann es nicht machen.
hier ist der Code, den ich
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;
}
Jede Hilfe groß geschrieben wäre, danke.
P.S. überprüfte alle verknüpfte Liste Frage hier und keine half.
das 'delete' ist ein reserviertes Schlüsselwort. Bitte benennen Sie es um. – learner
Entweder das ist C und dann können Sie eine Variable namens 'delete' verwenden (obwohl ich es nicht empfehlen würde), oder es ist nicht und dann sollten Sie nicht. In beiden Fällen ist die Verwendung von * beiden * Sprach-Tags falsch. – usr2564301
sry entfernt das C++ Tag – twistedhat