我試圖實現我自己的列表類,但是在倒轉列表的一部分時遇到了問題。雙向鏈表的反向部分
Revelant代碼:
void List<T>::reverse(ListNode * & head, ListNode * & tail)
{
ListNode* t;
ListNode* curr = head;
ListNode * funtail = tail;
int stop=0;
while(stop==0)
{
if(curr==funtail)
{
stop = 1;
}
t = curr->prev;
curr->prev = curr->next;
curr->next = t;
curr = curr->prev;
}
t = tail;
tail = head;
head = t;
}
如果我開始與列表
1 2 3 4 5 6 7 8 9 10
和我的指針傳遞給1和4,那麼列表應該看起來像
4 3 2 1 5 6 7 8 9 10
問題是,我的清單僅返回
1
與列表的其餘部分丟失(好吧,仍然可以從我的全局尾部變量訪問)。有任何想法嗎?我的方法錯了嗎?
在'while'循環的第一次迭代中,您將'curr-> prev'分配給't'。如果你開始在沒有前節點的情況下開始逆轉會發生什麼? – jrok 2012-02-20 17:32:31