本文總結了2種方法。
單鏈表node的資料結構定義如下:
class把當前鍊錶的下乙個節點pcur插入到頭結點dummy的下乙個節點中,就地反轉。listnode
}
dummy->1->2->3->4->5的就地反轉過程:
pcur是需要反轉的節點。
prev連線下一次需要反轉的節點
反轉節點pcur
糾正頭結點dummy的指向
pcur指向下一次要反轉的節點
偽**
//1.就地反轉法
2public
listnode reverselist1(listnode head)
15return
dummy.next;
16 }
新建乙個頭結點,遍歷原鍊錶,把每個節點用頭結點插入到新建鍊錶中。最後,新建的鍊錶就是反轉後的鍊錶。
pcur是要插入到新鍊錶的節點。
pnex是臨時儲存的pcur的next。
pnex儲存下一次要插入的節點
把pcur插入到dummy中
糾正頭結點dummy的指向
pcur指向下一次要插入的節點
偽**
1 pnex =pcur.next2 pcur.next =dummy.next
3 dummy.next =pcur
4 pcur = pnex
pcur is not null
1//2.新建鍊錶,頭節點插入法
2public
listnode reverselist2(listnode head)
11return
dummy.next;
12 }
有序單鏈表
由標題就可以知道,這篇部落格我們使用的是在插入時就已經排好序的單鏈表.我把它命名為 orderedlist 這裡我們從小到大排序,下面我們以此看一下它的主要方法與 實現就好 主要方法 插入節點 override public void insert int key else else if p.ne...
單鏈表反轉
單鏈表反轉,可以用迴圈做,當然也可以遞迴 詳見 include includestruct node 3 1 4 6 2 1 1 3 4 6 2 2 4 1 3 6 2 3 6 4 1 3 2 4 2 6 4 1 3 5 迴圈反轉,即依次改動3個指標值,直到鍊錶反轉完成 比如,上面第 1 行到第 2...
反轉單鏈表
include stdafx.h include include using namespace std struct listnode typedef listnode plistnode typedef plistnode list list creatlist return head void...