溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語(yǔ)言鏈表的來(lái)源分析

發(fā)布時(shí)間:2020-07-13 17:34:46 來(lái)源:網(wǎng)絡(luò) 閱讀:289 作者:ningcaichen66 欄目:編程語(yǔ)言

C語(yǔ)言中的鏈表是重點(diǎn),也是難點(diǎn),而且意義非凡。對(duì)鏈表的的抽象和恐懼是源于對(duì)它的來(lái)龍去脈的不明白。所以很有必要對(duì)它的發(fā)展淵源做透徹分析。

鏈表的單位是節(jié)點(diǎn),而節(jié)點(diǎn)源于復(fù)合數(shù)據(jù)類型:結(jié)構(gòu)體;

節(jié)點(diǎn)和結(jié)構(gòu)體的區(qū)別就是看是否有指針域,目的就是想找到下一個(gè)節(jié)點(diǎn);

結(jié)構(gòu)體形如:

struct Ghost

{

char name[30];

int age;

int height;

char addr[30];

};

節(jié)點(diǎn)形如:

struct Ghost

{

char name[30];

int age;

int height;

char addr[30];

struct Ghost *next;

};

現(xiàn)在來(lái)看一下創(chuàng)建1個(gè)節(jié)點(diǎn)的情況:

C語(yǔ)言鏈表的來(lái)源分析

效果如下:

C語(yǔ)言鏈表的來(lái)源分析

那么申請(qǐng)多個(gè)節(jié)點(diǎn)呢?如3個(gè)。

核心代碼如下:

//堆中申請(qǐng)變量

struct Ghost *g1 = (struct Ghost*)malloc(sizeof(struct Ghost));

struct Ghost *g2 = (struct Ghost*)malloc(sizeof(struct Ghost));

struct Ghost *g3 = (struct Ghost*)malloc(sizeof(struct Ghost));

//賦值

strcpy(g1->name, "聶小倩");

g1->age = 22;

g1->height = 165;

strcpy(g1->addr, "蘭若寺");

g1->next = NULL;

//賦值

strcpy(g2->name, "付清風(fēng)");

g2->age = 23;

g2->height = 166;

strcpy(g2->addr, "十里亭");

g2->next = NULL;

//賦值

strcpy(g3->name, "東方不敗");

g3->age = 24;

g3->height = 167;

strcpy(g3->addr, "黑木崖");

g3->next = NULL;

//遍歷

printf("姓名:%s", g1->name);

printf("年齡:%d", g1->age);

printf("身高:%d", g1->height);

printf("地址:%s", g1->addr);

//遍歷

printf("姓名:%s", g2->name);

printf("年齡:%d", g2->age);

printf("身高:%d", g2->height);

printf("地址:%s", g2->addr);

//遍歷

printf("姓名:%s", g3->name);

printf("年齡:%d", g3->age);

printf("身高:%d", g3->height);

printf("地址:%s", g3->addr);

效果圖:

C語(yǔ)言鏈表的來(lái)源分析

成功是成功了,但這很原始,可以改進(jìn)的:借助成員指針的力量自動(dòng)去找下一個(gè),讓鏈起來(lái)!

對(duì)賦值做改動(dòng):

C語(yǔ)言鏈表的來(lái)源分析

那么遍歷就可以改進(jìn)了:

C語(yǔ)言鏈表的來(lái)源分析

效果:

C語(yǔ)言鏈表的來(lái)源分析

這樣,我只要知道第1個(gè)節(jié)點(diǎn)的位置,后面的就可以一股腦的扯出來(lái)。這就是鏈表。

特點(diǎn):鏈表是一連串節(jié)點(diǎn)鏈起來(lái)的,是線性特點(diǎn)。只要拿第1個(gè)節(jié)點(diǎn),就可以把一堆的節(jié)點(diǎn)都找到。就像貪吃蛇一樣,蛇頭走到哪里,蛇身和蛇尾就跟到哪里。

和數(shù)組類似,數(shù)組的第1個(gè)元素的首地址就是數(shù)組的地址;鏈表的第1個(gè)節(jié)點(diǎn)的地址就是鏈表的首地址;

接下來(lái)就可以封裝出操作鏈表的函數(shù)了,如:遍歷鏈表,添加節(jié)點(diǎn),刪除節(jié)點(diǎn),統(tǒng)計(jì)節(jié)點(diǎn)。

更多詳細(xì)的鏈表分析參考《C語(yǔ)言,好爽》第7版(2017年)寧采臣錄制的。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI