面試題24 反轉鍊錶

2021-08-21 09:31:32 字數 854 閱讀 8491

題目描述:

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

為了防止反向之後鍊錶斷裂,先儲存節點的next,在反轉該節點的next為前乙個節點。

解題思路:

反轉鍊錶的頭節點是原鍊錶的末位節點

設定節點的前乙個節點指標ppre,鍊錶反轉相當於節點的下乙個節點為節點的前乙個節點。

1.從頭開始遍歷鍊錶,反轉鍊錶之後,原鍊錶的第乙個節點為反轉鍊錶的最後乙個節點,因此反轉後第乙個節點的下乙個節點為null,所以將ppre初始化為null。

2.向後遍歷原鍊錶(節點指標、前節點指標分別向後移動一位)第二個節點的下乙個節點為前乙個節點,將當前節點指向前乙個節點。

3.遍歷到原鍊錶最後乙個節點,即反轉鍊錶的頭節點。當節點的下乙個節點為空時,該節點是原鍊錶的最後乙個節點,返回節點指標作為反轉鍊錶的頭節點。

測試用例:

特殊輸入:煉表頭節點指標為空

功能測試:鍊錶只含有乙個節點,鍊錶含有多個節點

listnode* reverselist(listnode* phead) 

return presult;

}

面試題24 反轉鍊錶

反轉鍊錶 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。分析 為了正確的反轉乙個鍊錶,需要調整鍊錶中指標的方向,如下圖,我們在調整i的next指標時,除了需要知道節點i本身,還需要知道i的前乙個節點h,因為我們需要把i的next指向節點h,同時,我們還需要先儲存i的下乙個節...

面試題24 反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。原地逆置鍊錶,需要操作3個鍊錶的關係。假設i j k,當把j指向i的時候,就斷開了j k的指標,為了還能找到k,就需要在斷開之前,將k儲存下來。package com.wsy class node public node int...

面試題24 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。考察點 鍊錶指標 思維全面性 思路1 防止斷鏈,設定三個指標,分別是當前,前乙個,後乙個。當前節點為空停止迴圈。struct listnode class solution return reversehead 思路2 遞迴思想,包含重複子問題。class...