一個簡單結(jié)點的結(jié)構(gòu)體表示為: struct note { int data; /*數(shù)據(jù)成員可以是多個不同類型的數(shù)據(jù)*/ struct note *next; /*指針變量成員只能是-個*/ };
一個簡單的單向鏈表的圖示
1.鏈表是結(jié)構(gòu)、指針相結(jié)合的-種應用,它是由頭、中間、尾多個鏈環(huán)組成的單方向可伸縮的鏈表,鏈表上的鏈環(huán)我們稱之為結(jié)點。 2.每個結(jié)點的數(shù)據(jù)可用-個結(jié)構(gòu)體表示,該結(jié)構(gòu)體由兩部分成員組成:數(shù)據(jù)成員與結(jié)構(gòu)指針變量成員。 3.數(shù)據(jù)成員存放用戶所需數(shù)據(jù),而結(jié)構(gòu)指針變量成員則用來連接(指向)下-個結(jié)點,由于每-個結(jié)構(gòu)指針變量成員都指向相同的結(jié)構(gòu)體,所以該指針變量稱為結(jié)構(gòu)指針變量。 4.鏈表的長度是動態(tài)的,當需要建立-個結(jié)點,就向系統(tǒng)申請動態(tài)分配-個存儲空間,如此不斷地有新結(jié)點產(chǎn)生,直到結(jié)構(gòu)指針變量指向為空(NULL)。申請動態(tài)分配-個存儲空間的表示形式為: (struct note*)malloc(sizeof(struct note))
鏈表的建立 在鏈表建立過程中,首先要建立第一個結(jié)點,然后不斷地 在其尾部增加新結(jié)點,直到不需再有新結(jié)點,即尾指針指向 NULL為止。 設有結(jié)構(gòu)指針變量 struct note *p,*p1,*head; head:用來標志鏈表頭; p:在鏈表建立過程中,p總是不斷先接受系統(tǒng)動態(tài)分配的新結(jié)點地址。 p1->next:存儲新結(jié)點的地址。
鏈表建立的步驟: 第一步:建立第一個結(jié)點 struct node { int data; struct node *next; }; struct note *p,*p1,*head; head=p1=p=(struct node *)malloc(sizeof(struct node);
第二步: 給第-個結(jié)點成員data賦值并產(chǎn)生第二個結(jié)點 scanf(“%d”,&p->data); /*輸入10*/ p=(struct node *)malloc(sizeof(struct node);
第三步:將第-個結(jié)點與第二個結(jié)點連接起來 p1-> next=p;
第四步:產(chǎn)生第三個結(jié)點 p1=p; scanf(“%d”,&p->data);/*輸入8*/ p=(struct node *)malloc(sizeof(struct node); 以后步驟都是重復第三、四步,直到給出-個結(jié)束條件,不再建新的結(jié)點時,要有 p->next=NULL;它表示尾結(jié)點。
代碼 [cpp] view plaincopy
![]() |
|