我在爲雙向鏈表創建交換函數時遇到了問題。我想簡單地「重新鏈接」列表不會改變任何值(我知道這很容易)。我試圖創建這個臨時項目來保存back<-p->front
,這樣我可以設置q =這個前面和後面,但臨時項目隨p一起變化。我怎樣才能在沒有臨時物品的情況下交換這些物品,或者如何讓我的臨時物品行爲起來。如何爲雙向鏈表創建交換函數?
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;
}
所以你只交換一個節點,而不是從一個「DLinkedList」到另一個「DLinkedList」的整個列表?如果是這樣,你的問題是誤導。 – PaulMcKenzie
我刪除了我的答案,因爲我認爲帕迪的答案是解決此問題的最佳解決方案。 –