1.有頭結點的單鏈表原地逆置
//尾插法
bool reverse1(listnode &l)//翻轉後l為頭結點
return
true
;}
2.無頭結點的單鏈表原地逆置
//外加乙個頭結點
bool
reverse2
(listnode &l)
//最後l為尾結點;
return
true
;}
3.翻轉鍊錶中第m個節點到第n個節點的部分(lintcode題目,答案參考九章演算法),不帶頭結點
typedef
struct listnode
listnode;
listnode *
reverse
(listnode* l)
//翻轉鍊錶無頭結點的鍊錶l,返回頭結點p,,尾結點為l;
return p;
}listnode *
find
(listnode *l,
int x)
//找到帶頭結點的鍊錶第x個結點所在的位置
return p-
>next;
}listnode *
reversebetween
(listnode *l,
int m,
int n)
單鏈表原地逆置
題目 是編寫演算法將帶一單鏈表逆置,要求空間複雜度為o 1 o 1 o 1 分析 單鏈表分為帶頭節點和不帶頭節點兩種,逆置思路有兩種,第一種是採用頭插法重新建立新的單鏈表,該方法直接遍歷鍊錶,每次將當前結點新增到新鍊錶的頭部 第二種是通過該錶 next指標,定義三個指標 pre,p,r,分別表示三個...
單鏈表原地逆置
給定乙個帶頭結點的單鏈表,編寫演算法將其原地逆置。所謂 原地 是指空間複雜度為o 1 有兩種方法,頭插法和冒泡法。這兩種方法的時間複雜度均為o n 我們知道,用頭插法建立鍊錶,得到的鍊錶中元素的順序和輸入的順序相反,所以利用這一特點,可以將鍊錶逆置。給定乙個帶頭結點的單鏈表l,如下圖所示。首先用指標...
單鏈表逆置
單鏈表逆置 include include define item num 10 typedef struct tagnode node node linklist create void linklist destroy node head void linklist print node hea...