İki bağlantılı bir liste için bir takas işlevi oluşturma sorunları yaşıyorum. Ben sadece listeyi değiştirmek için "rewire" yapmak istiyorum (Bu kolay olacağını biliyorum). Bu geçici öğeyi back<-p->front
tutmaya çalıştım, böylece q = bu cepheye ve arkaya ayarlayabilirdim, ancak geçici öğe p ile birlikte değişir. Bu öğeleri geçici bir öğe olmadan nasıl değiştirebilirim veya geçici öğeyi nasıl davranacağımı nasıl anlarım?İki bağlantılı liste için nasıl bir takas işlevi yaratırsınız?
void DLinkedList::swap(Item *p, Item *q)
{
Item* temp = p;
p->next = q->next;
p->pre = q->pre;
if (p->next != NULL)
p->next->pre = p;
if (q->next != NULL)
q->next->pre = q;
q->next = temp->next;
q->pre = temp->pre;
if (p->pre != NULL)
p->pre->next = p;
if (!q->pre == NULL) {
q->pre->next = q;
}
cout << "- The items " << p->val << " & " << q->val << " were swapped -" << endl;
}
Yani sadece bir düğümü değiştiriyorsunuz, ve tüm listeyi bir 'DLinkedList'den diğerine 'DLinkedList' değil mi? Eğer öyleyse, sorunuz yanıltıcıdır. – PaulMcKenzie
Cevabımı sildim çünkü Paddy'nin cevabı bu problem için mümkün olan en iyi çözümdür. –