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