什么是鏈表?當(dāng)你用一個(gè)數(shù)組存放數(shù)據(jù)時(shí)就需要給它定義一個(gè)長(zhǎng)度,如果定一個(gè)未知的數(shù)據(jù),你就需要擴(kuò)大數(shù)組的范圍,有時(shí)如果由于某種特殊原因,數(shù)據(jù)增加,有需要重新修改程序,擴(kuò)大數(shù)組的存儲(chǔ)范圍,鏈表就是一種更加簡(jiǎn)便,不受限制的存儲(chǔ)方式,只需要根據(jù)分配內(nèi)存單元即可存儲(chǔ)的方式結(jié)構(gòu)。
處理鏈表需要哪些函數(shù)?
C提供了一些內(nèi)存管理函數(shù)這些內(nèi)存管理函數(shù)就可以為你分配內(nèi)存空間。

- malloc()函數(shù)
- calloc()函數(shù)
- free()函數(shù)
- reallo()函數(shù)

在執(zhí)行程序的過(guò)程中先一個(gè)一個(gè)開(kāi)辟結(jié)點(diǎn)然后在每一個(gè)結(jié)點(diǎn)中輸入數(shù)據(jù)。由于程序是為了實(shí)現(xiàn)某一功能而設(shè)計(jì)的程序所以下面我將舉例來(lái)說(shuō)明如何建立動(dòng)態(tài)鏈表?
舉一個(gè)建立n個(gè)整數(shù)的單鏈表的例子,由于本人能力有限,不過(guò)建立一個(gè)動(dòng)態(tài)鏈表還是很容易的。

建立一個(gè)n個(gè)整數(shù)的單鏈表,我用兩個(gè)函數(shù)來(lái)實(shí)現(xiàn)分別是creatlist函數(shù)和printlist函數(shù),它們的功能一個(gè)是創(chuàng)建,一個(gè)是輸出。
首先定義一個(gè)結(jié)構(gòu)體的類(lèi)型,這個(gè)結(jié)構(gòu)體類(lèi)型包括一個(gè)整形成員和一個(gè)指向結(jié)構(gòu)體類(lèi)型的指針成員。然后我們?cè)谳敵龊瘮?shù)中設(shè)三個(gè)指針變量,頭指針,指向當(dāng)前節(jié)點(diǎn)的指針和指向當(dāng)前節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)的指針。

第一,用malloc()函數(shù)分配第一個(gè)結(jié)點(diǎn),用head指向該結(jié)點(diǎn),然后用r指向該結(jié)點(diǎn)。
第二,繼續(xù)用malloc()函數(shù)做第一個(gè)結(jié)點(diǎn),s指向新結(jié)點(diǎn),向s輸出數(shù)據(jù),然后用r的next指向s,r再指向s。
第三,重復(fù)操作,一直創(chuàng)建到第n個(gè)整數(shù)型的單鏈表為止。再用printlist函數(shù)輸出。就好啦!

具體代碼如下:
struct node
{
int date;
struct node*next;
};
struct node*creatlist(into n)
{
struct node*head ,*s,*r;
int i=0;
if((head=strucr node*)malloc(sizeof(struct node)))==NULL)
{
printf("error!");
return 0;
}
head_>next=NULL;
r=head;
for(i=1;i<n;i++)
{
if((s=(struct node*)malloc(sizeof(struct node)))==NULL)
}
}

希望看完的你動(dòng)動(dòng)小手點(diǎn)個(gè)關(guān)注,你的點(diǎn)贊就是對(duì)我最大的鼓勵(lì)。