資料結構之單鏈表的原地逆置:
演算法思想:
從單鏈表的第乙個結點開始,用頭插法再次插入鍊錶,此時,鍊錶中元素的次序就是原來順序的逆序。
**:
#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,如下圖所示。首先用指標...