劍指OFFER筆記 24 反轉鍊錶

2021-10-07 15:27:35 字數 1990 閱讀 7050

**

package q24;

public

class

listnode

public

static listnode createlink

(int[

] arr)

listnode head =

newlistnode

(arr[0]

);listnode pnode = head;

for(int i =

1; i < arr.length; i++

)return head;

}public

static

void

outputlink

(listnode head)

system.out.

println();}}

package q24;

public

class

solution

//指向三個節點

listnode prenode =

null

; listnode curnode = head;

listnode nextnode = curnode.next;

//若只有乙個節點

if(nextnode ==

null

)//若有多個節點

while

(nextnode !=

null

) curnode.next = prenode;

return curnode;

}}

package q24;

public

class

; listnode head = listnode.

createlink

(nodearr1)

; listnode.

outputlink

(head)

; listnode head2 = s.

reverselist

(head)

; listnode.

outputlink

(head2)

;//乙個節點的情況

int[

] nodearr2 =

; head = listnode.

createlink

(nodearr2)

; listnode.

outputlink

(head)

; head2 = s.

reverselist

(head)

; listnode.

outputlink

(head2)

;//多個節點的情況

2 4 劍指offer 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。迭代法 畫圖模擬,發現需要三個指標來完成反轉,需要儲存下乙個節點,因為反轉後會丟失和後面節點的連線。注意頭節點的next要變成none 尾節點 返回節點是原來的尾節點。遞迴法 新建乙個頭節點指向尾節點的,每次遞迴返回值不變。每次遞迴傳入的節點phead是此...

劍指Offer 24 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。例 輸入 1 2 3 4 5 none 輸出 5 4 3 2 1 none 雙指標遍歷鍊錶,將當前節點的next設為前乙個節點。注意儲存當前節點的next來遍歷。時間複雜度 o n 空間複雜度 o 1 def reverse l...

劍指offer24 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。樣例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null思路 初始化乙個新的頭節點new head,然後用尾插法把原始鍊錶中的結點插入新的頭節點。最後return new head next.acwing 3...