介紹
定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉鍊錶的頭結點。
分析
如果要反轉鍊錶,就要把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所有元...