Ich habe Code geschrieben, um Elemente in eine kreisförmige doppelt verknüpfte Liste einzufügen und diese Elemente anzuzeigen. Ich soll auch in der Lage sein, den Endknoten aus der Liste zu löschen, sowie die Liste nach einem bestimmten Element durchsuchen.Löschen von Knoten aus der kreisförmigen doppelt verknüpften Liste
Das ist mein Arbeits Code für Add und Druck:
void Circular_DLList::add_to_tail(int a)
{
DLLNode *temp = new DLLNode;
temp->info = a;
if (is_empty()) {
tail = temp;
temp->next = tail;
temp->prev = tail;
}
else {
temp->next = tail->next;
temp->prev = tail;
tail = temp;
tail->prev->next = temp;
}
}
void Circular_DLList::print_list()
{
DLLNode *ptr;
ptr = tail->next;
do {
cout<< ptr->info << endl;
ptr = ptr->next;
}
while(ptr != tail->next);
}
Egal, was ich für die delete_from_tail Funktion schreiben, es erzeugt einen Segmentation Fault: 11. Dies ist mein Versuch für die Funktion (die den Fehler auslöst).
int Circular_DLList::delete_from_tail()
{
int a = tail->info;
if(tail == tail->next) {
delete tail;
tail = NULL;
}
else {
tail = tail->prev;
delete tail->next;
tail->next = NULL;
}
return a;
}
Jeder Rat, wie dies zu beheben wäre fantastisch. Ich habe versucht, zu debuggen, aber ich kann nicht scheinen, das Problem herauszufinden, oder wo genau es sich sogar bezieht. Danke
Sie wissen, dass Konzept der zirkulären Linkliste ist eigentlich kein Ende Recht zu haben? –
@UsamaZafar Ja, aber wir arbeiten mit einem Knoten namens Tail, also war es nur eine einfache Art, das zu sagen. Ich werde den Beitrag bearbeiten, um zu klären – btoohey
Tritt der Fehler beim Löschen selbst auf? Ich rate nicht. Ich denke, dass es auf Druck nach dem Löschrecht auftritt? –