單鏈表原地逆置

2021-10-05 00:12:48 字數 755 閱讀 5331

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...