第四周專案3(2) 連線

2021-07-22 23:48:50 字數 3685 閱讀 1857

問題描述及**:

[cpp] view plain copy

1. /*

2. *煙台大學計控學院

3. *作 者:朱建豪

4. *完成日期:2023年9月22日

5. *問題描述:已知l1和l2分別指向兩個單鏈表的頭結點,且已知其長度分別為m、n,請設計演算法將l2連線到l1的後面。實現這個演算法,完成測試,並分析這個演算法的複雜度。

6. */

(1) list.h的**

[cpp] view plain copy

1. #include2. #include3. typedef int elemtype;

4. typedef struct lnode //定義單鏈表結點型別

5. linklist;

9. void createlistf(linklist *&l,elemtype a,int n);//頭插法建立單鏈表

10. void createlistr(linklist *&l,elemtype a,int n);//尾插法建立單鏈表

11. void initlist(linklist *&l); //初始化線性表

12. void destroylist(linklist *&l); //銷毀線性表

13. bool listempty(linklist *l); //判斷線性表是否為空

14. int listlength(linklist *l); //求線性表長度

15. void displist(linklist *l); //輸出線性表

16. bool getelem(linklist *l,int i,elemtype &e); //求線性表某個資料元素值

17. int locateelem(linklist *l,elemtype e); //按元素值查詢

18. bool listinsert(linklist *&l,int i,elemtype e); //插入資料元素

19. bool listdelete(linklist *&l,int i,elemtype &e); //刪除資料元素

20. void link(linklist *&l1,linklist *&l2);

(2)list.cpp中的**

[cpp] view plain copy

1. #include"list.h"

2. void createlistf(linklist *&l,elemtype a,int n)//頭插法建立單鏈表

3.

15. }

16. void createlistr(linklist *&l,elemtype a,int n)//尾插法建立單鏈表

17.

29. r->next=null;

30. }

31.

32.

33.

34.

35. void initlist(linklist *&l) //初始化線性表

36.

40. void destroylist(linklist *&l)//銷毀線性表

41.

49. free(p); //此時q為null,p指向尾結點,釋放它

50. }

51. bool listempty(linklist *l) //判斷線性表是否為空

52.

55. int listlength(linklist *l) //求線性表長度

56.

64. return (n);

65. }

66.

67. bool getelem(linklist *l,int i,elemtype &e) //求線性表某個資料元素值

68.

76. if(p==null)

77. return false;

78. else

79.

83. }

84.

85. int locateelem(linklist *l,elemtype e) //按元素值查詢

86.

94. if(p==null)

95. return (0);

96. else

97. return(i);

98. }

99.

100. bool listinsert(linklist *&l,int i,elemtype e) //插入資料元素

101.

109. if(p==null)

110. return false;

111. else

112.

119. }

120.

121. bool listdelete(linklist *&l,int i,elemtype &e) //刪除資料元素

122.

130. if(p==null)

131. return false;

132. else

133.

142. }

143. void displist(linklist *l) //輸出單鏈表

144.

151. printf("\n");

152. }

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

154.

(3)main.cpp的**

[cpp] view plain copy

1. #include"list.h"

2. int main()

3. ;

7. elemtype b= ;

8. initlist(a);

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

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

11. initlist(b);

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

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

14. link(a, b);

15. printf("a:");

16. displist(a);

17. destroylist(a);

18. return 0;

19. }

執行結果:

單鏈表的基本運算

學習心得:

雖然簡單的演算法,但是自己還是寫不出來,還需要努力。

第四周專案 3(2)連線兩個鍊錶

問題及描述 煙台大學計算機學院 檔名稱 sm.cpp 完成日期 2017年9月27日 問題描述 連線兩個鍊錶 輸入描述 無 用到了前面專案設計的演算法庫lish.h include alonglist.h include include void link linklist l1,linklist ...

第四周 專案3 2

問題描述及 煙台大學計控學院 作 者 王力源 完成日期 2016年9月22日 問題描述 已知l1和l2分別指向兩個單鏈表的頭結點,且已知其長度分別為m n,請設計演算法將l2連線到l1的後面。實現這個演算法,完成測試,並分析這個演算法的複雜度。1 list.h的 include includetyp...

第四周專案二

檔名稱 array.cpp 作 者 李中意 完成日期 2014 年 3月 19 日 版本號 v1.0 輸入描述 無 include includeusing namespace std class void setb double y void setc double z double geta v...