19 反轉鍊錶

2022-08-10 18:18:21 字數 883 閱讀 6950

傳送門:程式設計師面試題精選100題(19)-反轉鍊錶[資料結構]

題目:輸入乙個鍊錶的頭結點,反轉該鍊錶,並返回反轉後鍊錶的頭結點。鍊錶結點定義如下:

struct

listnode

;

分析:可以將鍊錶表示為如下形式:

逆置操作相當於每次操作pcur節點,並將其next指向ppre,這樣直到鍊錶尾。

人實現:

無頭節點的鍊錶反轉實現:

//

輸入乙個鍊錶的頭結點,反轉該鍊錶,並返回反轉後鍊錶的頭結點

listnode* reverselist(listnode*head)

head->m_pnext=null;

return

pper;

}

其效果為:

原鍊錶:

逆置後:

帶頭節點的鍊錶反轉實現:

//

輸入乙個鍊錶的頭結點,反轉該鍊錶,並返回反轉後鍊錶的頭結點

listnode* reverselistwithheadnode(listnode*head)

//將最後節點(原第乙個節點)的next指向null

head->m_pnext->m_pnext =null;

//頭節點next指向第一節點(原最後乙個)

head->m_pnext=pper;

return

head;

}

原鍊錶:

逆置後:

鍊錶 反轉鍊錶

問題 兩兩交換鍊錶中的節點 問題 k 個一組翻轉鍊錶 問題鏈結 利用棧先進後出的特性,遍歷鍊錶,將每個結點加入棧中,最後進行出棧操作,先出棧的結點指向臨近的後出棧的結點。definition for singly linked list.struct listnode class solution ...

反轉鍊錶與分組反轉鍊錶

經典的反轉鍊錶,先上 public class listnode public class printlist system.out.println public class reverse public listnode reverse listnode root listnode pre nul...

鍊錶 鍊錶反轉I

package com.hnust.reversal public class listnode public listnode int value,listnode next override public string tostring 我們可以通過把鍊錶中鏈結節點的指標反轉過來,從而改變鍊錶的...