c語言課上作業 初學鍊錶操作

2022-09-19 22:51:14 字數 2856 閱讀 6748

根據上面的大佬的指導。今天完成了老師的作業。第一次完成了鍊錶的建立、遍歷、插入、刪除(基本靠抄,不好意思)。

作為乙個菜鳥,第一次完成100行以上的不用複製重複**的**。好興奮呀。

//不過還是有一點不明白。不明白以下**中的頭指標或者說頭節點是不是要在主調函式中最後一次遍歷後也把它free掉。

1

//操作環境 win 102//

ide visual studio 20173//

!!移植請將scanf_s換為scanf !!

45 #include "

pch.h

"6 #include 7 #include 89//

定義結構體

1011 typedef struct

node node, *pnode;

1617

//函式宣告 (幾種應用)

18 pnode createlist(void); //

宣告建立鍊錶函式

19void tr**erselist(pnode list); //

宣告遍歷鍊錶函式

20void insertlist(pnode list, int pos, int val); //

宣告鍊錶插入函式

21void deletethelist(pnode list); //

宣告刪除整個鍊錶函式

22void deletelist(pnode list, int pos); //

宣告刪除鍊錶元素函式

23 pnode findlist(pnode list); //

宣告鍊錶查詢函式

2425

//主調函式

26int

main()

38 39 //建立鍊錶

40 pnode createlist(void)

48 49 pnode ptail = phead; //宣告尾指標初始化指向頭指標

50 ptail->next = null; //使尾指標(目前是頭指標)指向空

51 52 printf("請輸入要建立的鍊錶長度:\n");

53 //scanf("%d", &len); 移植用

54 scanf_s("%d", &len); //輸入節點個數

55 for (int i = 0; i < len; i++)

61 62 printf("請輸入第%d個節點的資料:\n", i + 1);

63 //scanf("%d", &val);

64 scanf_s("%d", &val);

65 66 pnew->data = val; //輸入資料

67 ptail->next = pnew; //使上乙個next指向新節點

68 pnew->next = null; //使節點指向空(作為尾指標)

69 ptail = pnew; //讓尾指標指向新節點

70 }

71 printf("鍊錶建立成功\n");

72 return phead;

73 }

74 75

76 // 宣告遍歷鍊錶函式

77 void tr**erselist(pnode list)

83 while (p != null)

87 printf("\n");

88 }

89 90 // 宣告鍊錶插入函式

91 void insertlist(pnode list, int pos, int val)

99 100 pnode temp = (pnode)malloc(sizeof(node)); // 分配乙個臨時節點用來儲存要插入的資料

101 if (temp == null)

102

106

107 //插入節點

108 temp->data = val;

109 temp->next = p->next;

110 p->next = temp;

111 }

112

113 // 宣告刪除鍊錶元素函式

114 void deletelist(pnode list, int pos)

122

123 //刪除此節點

124 pnode temp = p->next; // 定義臨時指標tmp指向要刪除的節點

125 p->next = temp->next;

126 free(temp);

127 temp = null; //避免產生野指標

128 }

129

130 // 宣告鍊錶查詢函式

131 pnode findlist(pnode list)

144

145 if (p != null)

148 else

151 return p;

152 }

153

154 // 宣告刪除整個鍊錶函式

155 void deletethelist(pnode list)

164 printf("刪除鍊錶成功!\n");

165 }

C語言鍊錶 初學者版

對於鍊錶的學習,其中用到了結構體 指標的知識。鍊錶是由乙個個前後關聯的 同型別的結構體變數組成的,用來儲存資料。組成鍊錶的結構體變數稱為節點。struct st struct st createnulllist int struct st head,int date else return1 例如,...

C語言鍊錶綜合操作

預處理命令 include include define len sizeof struct student define format ld,f define p format ld 5.1f n define null 0 構造結構體 struct student 構造乙個結構體型別 int n...

鍊錶操作集合 C語言

主要是給自己以後複習知識,還有進行修改優化用的 歡迎批評,其中鍊錶合併的就地合併我並未掌握,我用了新的頭結點以後要補上 首先是標頭檔案定義 ifndef andrew define andrew include include include include include define size ...