我正在爲此苦苦掙扎。我已經得到它顯示大部分的列表,但其中的一個沒有顯示出來,我不能爲我的生活弄清楚如何解決它。如何向後顯示一個有序的雙向鏈表?
這裏是相關的代碼,我想。
我插入功能:
template <class T>
void DoublyLinkedList<T>::insert(T data)
{
DoublyLinkedList<T> *newNode, *tmp, *oneBefore;
newNode = new DoublyLinkedList(data);
if (mNext == NULL)
mNext = newNode;
else
{
oneBefore = mNext;
tmp = mNext;
while (tmp != NULL && tmp->mData < data)
{
oneBefore = tmp;
tmp = tmp->mNext;
}
if (tmp == mNext)
{
newNode->mNext = mNext;
mNext = newNode;
}
else
{
oneBefore->mNext = newNode;
newNode->mNext = tmp;
newNode->mPrevious = oneBefore;
}
}
}
我displayBackwards功能:
void displayBackward(DoublyLinkedList<int> *ptr)
{
DoublyLinkedList<int> *tmp;
tmp = ptr;
while (tmp != NULL)
{
cout << tmp->getData() << endl;
tmp = tmp->getPrevious();
}
}
我的主要功能的相關部分:
DoublyLinkedList<int> *ptr, *head, *tail;
ptr = new DoublyLinkedList<int>;
cout << "Testing Insert\n";
ptr->insert(1);
ptr->insert(2);
ptr->insert(3);
ptr->insert(1);
tail = ptr;
while (tail->getNext() != NULL)
tail = tail->getNext();
cout << "\n\nTesting displayBackward\n";
displayBackward(tail);
我的輸出是目前:
Testing displayBackward
3
2
1
@Mark:這是一個自由浮動的C風格雙向鏈表,而不是像一個綁定容器內的C++'std :: list'。 – Xeo
是的,我相信,爲什麼? –
@Xeo和user1698667,對不起 - 我的評論是基於問題的標題,而不是實際問題本身。我撤回併爲snark道歉。附:您可能會嘗試將標題更改爲更具代表性的問題。 –