Ich habe bereits single-linked zyklische Liste gemacht, die gut funktioniert, aber in diesem Fall bin ich auf ein solches Problem stoßen, dass, wenn ich Schwanz entfernen möchte, wird es entfernen es, wenn der Knoten als Schwanz eingefügt wurde, aber nicht, wenn es als Kopf eingefügt wurde. Ich nehme an, das Problem liegt in Insertionhead-Inserttail Verbindung oder Delete Tail-Funktion, kann aber nicht finden. Ich werde für deine Hilfe dankbar sein.C++ Doppelt verkettete Liste "delete tail" -Funktion
Struktur:
struct Element{
int value;
Element *prev, *next;
};
struct List2W{
Element *tail;
};
Code:
void insertHead(List2W& l, int x){
Element *new_head = new Element;
new_head->value=x;
if(isEmpty(l))
{
new_head->next=new_head;
new_head->prev=new_head;
l.tail=new_head;
}
else
{
new_head->next=l.tail->next;
new_head->prev=l.tail;
l.tail->next=new_head;
}
}
void insertTail(List2W& l, int x){
Element *new_tail = new Element;
new_tail->value=x;
if(isEmpty(l))
{
new_tail->next=new_tail;
new_tail->prev=new_tail;
}
else
{
new_tail->next=l.tail->next;
new_tail->prev=l.tail;
l.tail->next=new_tail;
}
l.tail=new_tail;
}
bool deleteTail(List2W& l, int &value){
if(isEmpty(l))
return false;
else if(l.tail->next==l.tail)
{
value=l.tail->value;
l.tail=NULL;
}
else
{
value=l.tail->value;
(l.tail->prev)->next=l.tail->next;
(l.tail->next)->prev=l.tail->prev;
l.tail=l.tail->prev;
}
return true;}
Wow, Sie haben sich sogar die Mühe gemacht, Bilder zu zeichnen. Danke für das. Ich verstehe nicht, warum Sie sagen, dass Insertionhead unmöglich ist. Ich sehe dort keinen Fehler und es scheint gut zu funktionieren. Könnten Sie bitte weiter erklären, warum (1) nicht funktioniert? new_tail-> next = l.tail-> next; // für das "next" in new element ordne ich das selbe was für das tail war, welches auf head zeigt, also sollte new_tail-> next auf l.tail-> next zeigen (was head ist) – NoobProgrammerWannabe
hab ich verstanden . Vielleicht war mein Verständnis falsch. – nariuji
Ich habe meine Antwort bearbeitet. Bitte beziehen Sie sich darauf, wenn Sie brauchen. – nariuji