先看代碼:
檔案名稱:main.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 /*******************************************************************
4
5 熟悉鏈表(List)的結構:
6 1、頭指標、前端節點、首節點和尾節點的概念
7 2、建立一個鏈表的演算法
8 3、遍曆一個鏈表的演算法
9
10 *******************************************************************/
11 struct Node
12 {
13 int value;
14 struct Node *pNext;
15 };
16
17
18 struct Node * initList(void );
19 void printListElements(struct Node *pheader);
20
21 int main(void)
22 {
23
24 struct Node *ph = initList();
25 printListElements(ph);
26 return 0;
27 }
28
29 /**************************************************
30
31 根據輸入鏈表元素個數和數值,動態建立鏈表
32
33 **************************************************/
34 struct Node * initList(void )
35 {
36 struct Node *pHeader; //頭指標,指向頭結點
37 struct Node *pTail; //類似遊標,每次移動指向最後一個元素
38 struct Node *pnode;
39 int i,num;
40 pHeader = (struct Node *)malloc(sizeof(struct Node)); //建立前端節點
41 pTail = (struct Node *)malloc(sizeof(struct Node)); //建立首元素
42 pHeader->pNext = pTail;
43
44 printf("請輸入鏈表元素的個數:");
45 scanf("%d",&num);
46 for(i=1;i<num+1;i++)
47 {
48 printf("請輸入第%d個元素值:",i);
49
50 scanf("%d",&pTail->value);
51 pnode = (struct Node *)malloc(sizeof(struct Node));
52
53 pTail->pNext = pnode;
54 pTail = pTail->pNext;
55
56
57 }
58
59 pTail->pNext = NULL; //****** 注意單獨為最後一個元素的指標域賦空,不然此鏈表沒有尾結點了
60
61 return pHeader;
62
63
64 }
65 /************************************************************************
66
67 遍曆所有元素值 ,並列印輸出
68
69 ************************************************************************/
70 void printListElements(struct Node *pheader)
71 {
72 struct Node *node;
73 int i = 1;
74 node = pheader->pNext; //node 指向了首元素
75 while(NULL!=node->pNext)
76 {
77 printf("第%d個元素值是:%d\n",i,node->value);
78 i++;
79 node = node->pNext; //node類似遊標,每次向後移動,指向下一個元素
80
81 }
82 }
小結:
1、理解單向鏈表的結構,如所示:
1)頭結點:在建立鏈表過程中起到開頭作用,但在它的資料域裡盡量不要存放程式的資料,以免在進行刪除第一個資料時無能為力,因為無法找到那個指向前端節點的節點,不利於針對所有資料的迴圈滾動操作。它是不含有效資料的,只是指標域指向首結點。
2)空鏈表就是頭結點的指標域為空白。
3)建立鏈表時,一定要注意為最後一個結點的指標域賦NULL,不然在對該鏈表遍曆時,沒有結尾了。
4)在對有頭結點的鏈表操作時,要處理好這個首結點,以便準確地進行迴圈操作。
以上只是回顧C基礎知識時,做的簡單筆記,希望大家不要見笑,呵呵