Zaten çok iyi çalıştı, tek başına bağlı döngüsel liste yaptım, ancak bu durumda, ben bu sorunu gidermek, kuyruk kaldırmak istiyorsanız, o kaldıracak Düğüm kuyruk olarak takıldıysa, ancak başa takılmışsa olmaz. Varsayalım ki, buradaki sorun, yerleştirme eklenti bağlantısı içinde ya da kuyruk işlevini silmekte, ancak bulamıyor. Yardımın için minnettar olacağım.C++ Çift bağlantılı liste "kuyruğu sil" işlevi
Yapısı:
struct Element{
int value;
Element *prev, *next;
};
struct List2W{
Element *tail;
};
Kodu:
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;}
Vay canına, resimler çizmekten bile rahatsız olmuşsun. Bunun için teşekkür ederim. Yine de neden bu imkansız olduğunu söylediğinizi anlamıyorum. Orada bir hata görmüyorum ve iyi çalışıyor gibi görünüyor. Lütfen, (1) 'in neden işe yaramadığını daha fazla açıklayabilir misiniz? new_tail-> next = l.tail-> next; // yeni elemandaki "sonraki" için, başa işaret eden kuyruk için aynı olanı atayım, bu yüzden bu yeni_diyen-> sonra, l.tail-> sonraki (kafa) işaret etmelidir – NoobProgrammerWannabe
Anladım . Belki benim anlayışım yanlıştı. – nariuji
Cevabımı düzenledim. İhtiyacınız varsa lütfen ona bakın. – nariuji