15 反轉鍊錶

2021-10-23 22:30:53 字數 925 閱讀 9990

定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。

修改指標指向。記憶:

每一次(對應while中四步):

(1)原鏈的頭結點指向新結點的後置結點;

(2)頭結點被新結點後置指標指向;

(3)新結點成為頭結點;

(4)保持q指標在p指標的所指節點的下乙個節點上

:# 返回listnode

defreverselist

(self, phead)

:# write code here

ifnot phead:

return

none

p = phead

q = phead.

next

while q:

phead.

next

= q.

next

# 頭指標指向下乙個節點的後置節點

q.next

= p # 讓頭節點的下乙個節點反向指向頭節點

p = q # p指標復位,p指向新的頭節點(原頭節點的下乙個節點)

q = phead.

next

# q指標復位(保持在p指標的後面),指向新的頭節點的後乙個節點

return p

15 反轉鍊錶

題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。struct listnode class solution 第一種方法是 非遞迴方法 struct listnode class solution return ppre 第二種方法是 遞迴方法 遞迴的方法其實是非常巧的,它利用遞迴走到鍊錶的末...

15 反轉鍊錶

題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。一 利用棧 空間效率低 利用棧stack容器後進先出 1.將鍊錶從頭到尾遍歷放入stack中 2.棧依次彈出元素賦給下乙個結點值,指標指向下乙個結點 2.然後改變結點指標指向前乙個位置,即完成反轉。struct listnode class so...

15 反轉鍊錶

1 反轉鍊錶2 題目 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素 3struct listnode48 9 思路 比如 1 2 3 4 5 6 10 反轉後 1 2 3 4 5 6 11 為了防止3和4斷開,需要以下操作 12 首先知道結點3的前乙個結點2,因為我們需要把3的next指向2 13 ...