劍指offer面試題24 反轉鍊錶 java

2021-08-02 22:31:53 字數 929 閱讀 8933

題目:定義乙個方法 輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點

為了正確反轉乙個鍊錶,需要調整鍊錶每個節點對下乙個節點的指向。

思路:

(1)把當前節點的下乙個節點儲存起來

當前節點的next指向它前乙個節點之前要把它的後乙個節點儲存起來。因為後乙個節點只能通過當前節點的next找到,如果不提前儲存起來,當前節點的next指向它的前乙個節點後,它後面的節點將失去引用找不到了。

(2)判斷是否達到尾節點

若果當前節點的下乙個節點是空的話 那麼當前節點就是鍊錶的尾節點 也就是反轉後鍊錶的頭節點。

(3)當前節點的next指向當前節點的前乙個節點(實現當前節點指向反轉)

(4)將當前節點的前乙個節點和當前節點都後移

非遞迴方法:

public

class reverselist

pnode.next = pprev;

//整體鍊錶往後移動

pprev = pnode;

pnode = pnext;

}return preversehead;

}public

static

void

main(string args)

}}

遞迴方法:

public listnode reverse(listnode head)   

listnode secondelem = head.next;

head.next = null;

listnode reverserest = reverse(secondelem);

secondelem.next = head;

return reverserest;

}

劍指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...