演算法學習之旅,初級篇(27) 逆轉乙個鍊錶

2021-08-06 08:17:49 字數 649 閱讀 4506

介紹

定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉鍊錶的頭結點。

分析

如果要反轉鍊錶,就要把next指標指向prev指標。所以移動時,需要儲存next,prev以及當前的鍊錶指標。

**

#include

#include

#include

using namespace std;

typedef struct listnode

listnode;

//逆轉鍊錶

listnode* reverselist(listnode* phead)

return pprev;

}int main()

a1=m_a;

while(a1!=

null)

cout

while(k!=

null)

system("pause");

return

0;}

遇到的問題

注意指標移動。和指標的改變順序。

演算法學習之旅,初級篇(30) 刪除鍊錶內節點

介紹 給定單向鍊錶的頭指標和第幾個節點,定義乙個函式在o 1 時間刪除該節點。分析 先遍歷找到節點指標,然後進行刪除 include include typedef struct listnode listnode void deletenode listnode pnode,listnode pd...

演算法學習之旅,中級篇(2) 插入排序

介紹 每次從無序表中取出第乙個元素,把它插入到有序表中的合適位置。分析 第一趟 比較前兩個數的大小,然後把其中最小的插入排在第乙個位置。第二趟 比較第三個數與前兩個數的大小,大的數後移,知道遇到小的,便插入到較小數的後面,數不再移動。依次進行,進行了n 1躺後,就完成了整個排序過程。include ...

演算法學習 兩個棧實現乙個佇列

問題描述 分析 第一眼就能想到兩個做法,1 入隊麻煩出隊容易 宣告兩個棧,乙個是存資料用的棧 datastack 乙個是輔助用的棧 tempstack 入隊操作時,先將datastack中的所有元素出棧壓入tempstack中,然後將要入隊的元素壓入tempstack中,再將tempstack所有元...