資料結構之單鏈表的原地逆置

2021-08-10 20:25:03 字數 674 閱讀 2640

資料結構之單鏈表的原地逆置:

演算法思想:

從單鏈表的第乙個結點開始,用頭插法再次插入鍊錶,此時,鍊錶中元素的次序就是原來順序的逆序。

**:

#include

#include

#define elemtype int

#define maxsize 20

typedef struct listnode

listnode,*linklist; //定義結點

//-------------------頭插法建立乙個單鏈表-----------------------

linklist initlist(linklist l)

return l;

}//-------------------------原地逆置函式---------------------------

linklist reverse(linklist l)

return l;

}void printlist(linklist l)

printf("\n\n\n");

}int main()

執行結果:

單鏈表原地逆置

題目 是編寫演算法將帶一單鏈表逆置,要求空間複雜度為o 1 o 1 o 1 分析 單鏈表分為帶頭節點和不帶頭節點兩種,逆置思路有兩種,第一種是採用頭插法重新建立新的單鏈表,該方法直接遍歷鍊錶,每次將當前結點新增到新鍊錶的頭部 第二種是通過該錶 next指標,定義三個指標 pre,p,r,分別表示三個...

單鏈表原地逆置

1.有頭結點的單鏈表原地逆置 尾插法 bool reverse1 listnode l 翻轉後l為頭結點 return true 2.無頭結點的單鏈表原地逆置 外加乙個頭結點 bool reverse2 listnode l 最後l為尾結點 return true 3.翻轉鍊錶中第m個節點到第n個節...

單鏈表原地逆置

給定乙個帶頭結點的單鏈表,編寫演算法將其原地逆置。所謂 原地 是指空間複雜度為o 1 有兩種方法,頭插法和冒泡法。這兩種方法的時間複雜度均為o n 我們知道,用頭插法建立鍊錶,得到的鍊錶中元素的順序和輸入的順序相反,所以利用這一特點,可以將鍊錶逆置。給定乙個帶頭結點的單鏈表l,如下圖所示。首先用指標...