問題描述及**:
[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...