單鏈表的經典問題4

2021-10-09 09:00:10 字數 2441 閱讀 3966

單鏈表中結點型別定義如下:

typedef

struct link node,

*linklist;

設a和b是兩個單鏈表(帶頭節點),其中元素遞增有序,設計乙個演算法從a和b中公共元素產生單鏈表c,要求不破壞a b的結點

void

fun3

(linklist& a, linklist& b)

else

if(p->data > q->data)

else

else}}

display

(c);

}

2.已知兩個鍊錶a和b分別表示兩個集合,其中元素遞增排列。繪製函式,求a和b的交集,並存放於a鍊錶中。

void

fun4

(linklist& a, linklist& b)

else

if(p->data > q->data)

else

}}

3.頭指標分別為la,lb的帶頭節點的單鏈表中,結點按元素遞增有序排列,將la,和lb兩個單鏈表合併成按元素遞增有序的單鏈表,要求不另外開闢空間,la作為合併後的單鏈表的頭節點

linklist uni_te

(linklist la, linklist lb)

else}if

(p ==

null)}

else

}return la;

}

4.兩個整數序列a=a1,a2,a3,…,am和b=b1,b2,b3,…bn已經存入兩個單鏈表中,設計乙個演算法,判斷序列b是否是序列a的連續子串行

int

pattern

(linklist a, linklist b)

else}if

(q ==

null

)else

cout <<

0<< endl;

return0;

/*node* p = a->next;

node* q = b->next;

while (p)

else

if (qq == null)

p = p->next;

} }

cout << 0 << endl;

return 0;*/

}

5.設計乙個演算法用於判斷帶頭節點的迴圈雙鏈表是否對稱

int

flag

(linklist l)

else

}return flag;

6.有兩個迴圈單鏈表(不帶頭節點),煉表頭指標分別為h1和h2,編寫乙個函式將鍊錶h2鏈結到h1之後,要求鏈結後的鍊錶仍保持迴圈鍊錶形式

void

fun5

(linklist& h1, linklist& h2)

while

(q->next != h2)

p->next = h2;

q->next = h1;

}

7.設有乙個帶頭節點的單鏈表,其結點值都是正整數。設計乙個演算法,反覆找出單鏈表中結點值最小的結點,並輸出,然後將該結點從中刪除,直到單鏈表為空位置,再刪除表頭結點

void

de_all

(linklist& l)

p->next = l;

while

(l->next != l)

pre = p;

p = p->next;

} temp = min_p;

cout << temp->data <<

" ";

min_pre->next = min_p->next;

//free(temp);

}//free(l);

}

8.已知帶頭節點單鏈表,頭指標list,不改變鍊錶的前提下設計高效的演算法,查詢鍊錶中倒數第k個位置上的結點的值

int

fun6

(linklist list,

int k)

else}if

(p ==

null

&& k >0)

cout << q->data << endl;

return1;

/*node* p = list;

node* q = list;

while (k > 0&&q->next!=null)

if (q->next == null && k != 0)

while (q)

cout << p->data;

return 0;*/

}

單鏈表的經典問題

單鏈表中的節點型別描述如下 typedef struct link node,linklist 使用尾插法 頭插法 建立乙個帶頭節點 不帶頭節點 的單鏈表 void creat list head linklist l 頭插法 int x l node malloc sizeof node 先建立乙...

單鏈表經典問題3

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

單鏈表經典題型

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