劍指Offer 面試題24 反轉鍊錶

2021-10-25 21:51:11 字數 1417 閱讀 3369

/**

* 面試題24:反轉鍊錶.leetcode hot100第206題

* 輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。

* 輸入,輸出

* @author dengjie

* @create 2021-03-23 12:32

*/public

class

solution24

/** * 方法一:迭代,劍指offer,頭插法

* @param head

* @return

*/public

static node reverselist

(node head)

node newhead =

newnode(0

);//鍊錶反轉後的頭節點

node temp = null;

//記錄當前節點的下乙個節點

node phead = head;

//指向當前節點

while

(phead != null)

return newhead.next;

}/**

* leetcode206簡單題,迭代

* @return

*/public

static node reverselisttwo

(node head)

node pre = null;

node cur = head;

while

(cur != null)

return pre;

}/**

* 方法三:遞迴

* @param head

* @return

*/public

static node reverselistthree

(node head)

// 想象遞迴已經層層返回,到了最後一步

// 以鍊錶 1->2->3->4->5 為例,現在鍊錶變成了 5->4->3->2->null,1->2->null(是乙個鍊錶,不是兩個鍊錶)

// 此時 newhead是5,head是1

node newhead =

reverselist

(head.next)

;// 最後的操作是把鍊錶 1->2->null 變成 2->1->null

// head是1,head.next是2,head.next.next = head 就是2指向1,此時鍊錶為 2->1->2

head.next.next = head;

// 防止鍊錶迴圈,1指向null,此時鍊錶為 2->1->null,整個鍊錶為 5->4->3->2->1->null

head.next = null;

return newhead;

}}

劍指offer 面試題24 反轉鍊錶

完整 位址 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點 很簡單,單純考察 的魯棒性 要針對區分成以下三種情況處理 1.輸入的煉表頭指標為null 2.輸入的鍊錶只有乙個節點 3.輸入的鍊錶有多個節點 正常情況 public static class listnode pu...

劍指offer 面試題24 鍊錶反轉

題目 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。思路 需要定義三個節點,當前節點pnode,前一節點ppre,和後一節點pnext。要將當前節點的下一節點pnode next用下一節點儲存起來,避免在反轉時發生鍊錶斷裂。然後將當前節點指向前一節點,然後將當前節點的指標移到下一節點,前一節點和下一...

《劍指offer 面試題24 反轉鍊錶》

劍指offer 面試題24 反轉鍊錶 註明 僅個人學習筆記 反轉鍊錶 public class reverselist24 鍊錶節點唯一時,返回頭節點 if head.next null node preversehead null node pnode head node prenode null...