反轉鍊錶,(5)

2021-08-07 17:04:54 字數 1066 閱讀 4860

實現鍊錶的反轉,比如原來是 1->2->3->4->5;翻轉後就是 5->4->3->2->1,

思路是:首先定義pnode指向頭結點,prrev指向null,pnext指向null,在鍊錶非null的情況下,讓 pnext = pnode->m_pnext; 也就是pnext指向了第二個節點,這時候如果pnext ==null了,說明已經到達了原鍊錶的尾部節點,否則執行第一次反轉,(1)pnode->m_pnext = pprev;讓第乙個節點的m_pnext指向null,這時候pprev還是null的。(2)pprev = pnode;讓prrev指向第乙個節點(2)pnode = pnext;pnode後移乙個節點,接著如果pnode不為null,執行第二次迴圈。第二次迴圈會反轉第二個節點,一次類推。

listcommon.h 依賴:

鍊錶基本操作的函式實現。(1)

#include #include "listcommon.h"

using namespace std;

listnode* reversedlistnode(listnode* phead)

//開始處理反轉,第一次迴圈,反轉第乙個節點,第二次反轉第二個節點...

pnode->m_pnext = pprev;

pprev = pnode;

pnode = pnext;

} cout << "reversed list:"<

pc:~/algorithm$ g++ listcommon.cpp reversedlist.cpp -o reversedlist

pc:~/algorithm$ ./reversedlist

original list:

print list begin ---12

345print list end

reversed list:

print list begin ---54

321print list end

鍊錶 反轉鍊錶

問題 兩兩交換鍊錶中的節點 問題 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 我們可以通過把鍊錶中鏈結節點的指標反轉過來,從而改變鍊錶的...