單鏈表的經典問題

2021-10-24 10:32:54 字數 1400 閱讀 5641

單鏈表中的節點型別描述如下:

typedef

struct link node,

*linklist;

使用尾插法(頭插法)建立乙個帶頭節點(不帶頭節點)的單鏈表

void

creat_list_head

(linklist& l)

*///頭插法

int x;

l =(node*

)malloc

(sizeof

(node*))

;//先建立乙個頭節點

l->next =

null

;while

(cin >> x && x >0)

}

使用尾插法(頭插法)建立乙個不帶頭節點的單鏈表

void

creat_list_withouthead

(linklist& l)

*///尾插法

int x;

node* r =l;

//指標r指向單鏈表的尾節點

l =null

;while

(cin >> x && x >0)

else

}}

3.在該單鏈表(帶頭節點)的第x個元素前插入乙個整數y (從0開始)

void

add_before_x

(linklist& l,

int x,

int y)

while

(p !=

null

&& t < x -1)

if(x ==0)

if(p !=

null

)else

}

4.刪除單鏈表(帶頭節點)中的第i個元素(從0開始)

void

delet_x

(linklist& l,

int i)

node* p = l->next;

int t =0;

while

(p !=

null

&& t < i -1)

if(i ==0)

p = l;}if

(p ==

null

||p->next==

null

) node* q = p->next;

p->next = q->next;

//free(q);

}

5.單鏈表(帶頭節點)的逆置

void

reverse

(linklist& l)

}

單鏈表經典問題3

單鏈表中節點型別定義如下 typedef struct link node,linklist 1.試編寫在帶頭節點的單鏈表l中刪除乙個最小值節點的高效演算法 假設最小值節點時唯一的 void delete minx linklist l pre pre next p p next min pre n...

單鏈表的經典問題4

單鏈表中結點型別定義如下 typedef struct link node,linklist 設a和b是兩個單鏈表 帶頭節點 其中元素遞增有序,設計乙個演算法從a和b中公共元素產生單鏈表c,要求不破壞a b的結點 void fun3 linklist a,linklist b else if p d...

單鏈表經典題型

單鏈表中經常考的題型中的四種題型 1.單鏈表逆置並列印,逆置又分為兩種 1 就地逆置 2 頭插法逆置 1 就地逆置顧名思義就是在不改變單鏈表儲存的基礎上進行逆置,下面的就是就地逆置的思想,具體見 struct node m q next 儲存即將斷開的結點 while q null q m m q ...