劍指offer面試題24 反轉鍊錶

2021-10-07 14:49:56 字數 784 閱讀 2938

題目描述

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

如上圖,假設經過若干操作,我們已經把節點h之前的指標調整完,這些節點的next都指向前乙個節點。接下來把i的next指向h。但是這時無法在鍊錶中遍歷到節點j。為了避免在節點i處斷開,需要在調整節點i的next之前,把節點j儲存下來。

也就是說,我們在調整節點i的next指標時,除了知道節點i本身,還需要知道前乙個指標,因此我們需要把節點i的next指向節點h。同時,我們還需要事先儲存i的下乙個節點j,以防止鍊錶斷開。

初始化:3個指標,分別指向當前遍歷到的節點、它的前乙個節點及後乙個節點。

/*

public class listnode

}*/public

class

solution

listnode preversedhead = null;

listnode pnode = head;

listnode pprev = null;

while

(pnode != null)

pnode.next = pprev;

pprev = pnode;

pnode = pnext;

}return preversedhead;

}}

時間複雜度:o(n), 遍歷一次鍊錶

空間複雜度:o(1)

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