第四周專案3(3) 單鏈表遞增

2021-07-23 01:42:06 字數 3869 閱讀 7322

問題描述及**:

[cpp] view plain copy

1. /*

2. *煙台大學計控學院

3. *作 者:朱建豪

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

5. *問題描述:設計乙個演算法,判斷單鏈表l是否是遞增的。實現這個演算法,並完成測試。

6. */

演算法庫的**:

[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. bool increase(linklist *l);

[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. bool increase(linklist *l)

154.

168. }

169. return true;

170. }

判斷遞增的函式**:

[cpp] view plain copy

1. bool increase(linklist *l)

2.

16. }

17. return true;

18. }

主函式**:

[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. printf("a: %c\n", increase(a)?'y':'n');

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

16. destroylist(a);

17. destroylist(b);

18. return 0;

19. }

執行結果:

單鏈表的基本運算

學習心得:

慢慢來,慢慢體會演算法,相信有一天我也會自己編出演算法

第四周 3 3專案 單鏈表演算法

檔名稱 第四周 3.3專案 單鏈表演算法 完成日期 2014.09.25 版號 v1.0 問題描述 設計乙個演算法,判斷單鏈表l是否是遞增的。實現這個演算法,並完成測試 輸入描述 無 輸出描述 a n b y include include include linklist.h ifndef lin...

第四周 專案3 3

問題描述及 煙台大學計控學院 作 者 王力源 完成日期 2016年9月22日 問題描述 設計乙個演算法,判斷單鏈表l是否是遞增的。實現這個演算法,並完成測試。演算法庫的 include includetypedef int elemtype typedef struct lnode 定義單鏈表結點型...

第四周專案3 單鏈表的應用 單鏈表遞增

問題及 煙台大學計算機控制與工程學院 作 者 劉倩 完成日期 2016年9月18日 問題描述 設計乙個演算法,判斷單鏈表l是否是遞增的。實現這個演算法,並完成測試。1 list.h include includetypedef int elemtype typedef struct lnode 定義...