反轉有序鏈單鏈表

2021-07-14 12:10:55 字數 1540 閱讀 1954

本文總結了2種方法。

單鏈表node的資料結構定義如下:

class

listnode

}

把當前鍊錶的下乙個節點pcur插入到頭結點dummy的下乙個節點中,就地反轉。

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.next

2 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...