第四周專案3 單鏈表應用

2021-08-08 23:16:21 字數 3635 閱讀 3237

/*  

*檔名稱:第四周專案3 單鏈表應用

*作 者:葛惠文

*完成日期:2023年10月3日

*版 本 號:v1.0

*問題描述:完成下面的應用時,除專案中給出的特殊要求,

其餘工作均可利用專案2完成的演算法支援

*/

1、

設計乙個

演算法,將

乙個帶頭

結點的數

據域依次

為a1,

a2,...,a

n(n≥

3)的單

鍊錶的所

有結點逆

置,即第

乙個結點

的資料域

變為an

,...,最

後乙個結

點的資料

域為a1

。實現這

個演算法,

並完成測

試。提示

:實現算

法時,可

以設計下

面的函式

:voi

drev

erse

(lin

klis

t*&l

)

#include #include #include "linklist.h"

void reverse(linklist *&l)

}int main()

; createlistr(l,a,8);

printf("l:");

displist(l);

reverse(l);

printf("逆置後l: ");

displist(l);

destroylist(l);

return 0;

}

1

、設計一

個演算法,

將乙個帶

頭結點的

資料域依

次為a1

,a2,

...,an

(n≥3

)的單鏈

表的所有

結點逆置

,即第一

個結點的

資料域變

為an,

...,最後

乙個結點

的資料域

為a1。

實現這個

演算法,並

完成測試

。提示:

實現演算法

時,可以

設計下面

的函式:

void

reve

rse(

link

list

*&l)

#include #include #include "linklist.h"

void link(linklist *&l1, linklist *&l2)

int main()

; elemtype b= ;

initlist(a);

for(i=3; i>=0; i--)

listinsert(a, 1, a[i]);

initlist(b);

for(i=5; i>=0; i--)

listinsert(b, 1, b[i]);

link(a, b);

printf("a:");

displist(a);

destroylist(a);

return 0;

}

該演算法的複雜度為o(m),因為再次演算法中只有訪問了一次l1鍊錶。1、

設計乙個

演算法,將

乙個帶頭

結點的數

據域依次

為a1,

a2,...,a

n(n≥

3)的單

鍊錶的所

有結點逆

置,即第

乙個結點

的資料域

變為an

,...,最

後乙個結

點的資料

域為a1

。實現這

個演算法,

並完成測

試。提示

:實現算

法時,可

以設計下

面的函式

:voi

drev

erse

(lin

klis

t*&l

) 3、設計乙個演算法,判斷單鏈表l是否是遞增的。實現這個演算法,並完成測試。

#include #include #include "linklist.h"

bool increase(linklist *l)

}return true;

}int main()

; elemtype b= ;

initlist(a);

for(i=3; i>=0; i--)

listinsert(a, 1, a[i]);

initlist(b);

for(i=5; i>=0; i--)

listinsert(b, 1, b[i]);

printf("a: %c\n", increase(a)?'y':'n');

printf("b: %c\n", increase(b)?'y':'n');

destroylist(a);

destroylist(b);

return 0;

}

1、

設計乙個

演算法,將

乙個帶頭

結點的數

據域依次

為a1,

a2,...,a

n(n≥

3)的單

鍊錶的所

有結點逆

置,即第

乙個結點

的資料域

變為an

,...,最

後乙個結

點的資料

域為a1

。實現這

個演算法,

並完成測

試。提示

:實現算

法時,可

以設計下

面的函式

:voi

drev

erse

(lin

klis

t*&l

)1 、

設 計一 個

算 法, 將

一 個帶 頭

結 點的 數

據 域依 次

為 a1 ,

a 2,

... ,

a n( n

≥ 3) 的

單 鍊錶 的

所 有結 點

逆 置, 即

第 乙個 結

點 的數 據

域 變為 a

n ,... ,

最 後一 個

結 點的 數

據 域為 a

1 。實 現

這 個算 法

, 並完 成

測 試。 提

示 :實 現

算 法時 ,

可 以設 計

下 面的 函

數 :v o

i dr e

v er s

e (l i

n kl i

s t* &

l )

第四周專案3 單鏈表應用

1.void reverse linklist l main int main createlistr l,a,5 reverse l displist l destroylist l return 0 結果 listinsert b,1,b i 也對.link a,b printf a displ...

第四周 專案3 單鏈表應用

作 者 王曉慧 完成日期 2016年9月22日 版 本 號 v1.0 問題描述 已知l1和l2分別指向兩個單鏈表的頭結點,且已知其長度分別為m n,請設計演算法將l2連線到l1的後面。實現這個演算法,完成測試,並分析這個演算法的複雜度。輸入描述 無 程式輸出 輸出整合後的鍊錶 ifndef link...

第四周 專案3 單鏈表應用

作 者 李琳汐 完成日期 2017 年 9 月 27 日 版 本 號 v1.0 問題描述 將乙個帶頭結點的資料域依次為a1,a2,an n 3 的單鏈表的所有結點逆置,即第乙個結點的資料域變為an,最後乙個結點的資料域為a1 include include include linklist.h vo...