C語言編程基礎(chǔ)學(xué)習(xí)——鏈表詳解良价!

C語言是面向過程的明垢,而C++是面向?qū)ο蟮?/b>

C和C++的區(qū)別:

C是一個(gè)結(jié)構(gòu)化語言痊银,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)溯革。C程序的設(shè)計(jì)首要考慮的是如何通過一個(gè)過程致稀,對輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)抖单。

C++矛绘,首要考慮的是如何構(gòu)造一個(gè)對象模型货矮,讓這個(gè)模型能夠契合與之對應(yīng)的問題域囚玫,這樣就可以通過獲取對象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制裸违。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣。之所以說C++比C更先進(jìn)枪汪,是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”宿稀。

C與C++的最大區(qū)別:在于它們的用于解決問題的思想方法不一樣祝沸。之所以說C++比C更先進(jìn)罩锐,是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”,而就語言本身而言竭恬,在C中更多的是算法的概念。那么是不是C就不重要了岔绸,錯(cuò)亭螟!算法是程序設(shè)計(jì)的基礎(chǔ),好的設(shè)計(jì)如果沒有好的算法扁掸,一樣不行锈麸。而且忘伞,“C加上好的設(shè)計(jì)”也能寫出非常好的東西。

鏈表:

一系列結(jié)構(gòu)連在一起,每一個(gè)結(jié)構(gòu)體變量里面都有一個(gè)指針pNext,pNext指向下一個(gè)結(jié)構(gòu)體變量育勺,尾節(jié)點(diǎn)的pNext指向NULL。

靜態(tài)鏈表:

structstudents stu1 = { 1, "a", NULL };

structstudents stu2 = { 2, "b", NULL };

structstudents stu3 = { 3, "c", NULL };

stu3.pNext = &stu2;

stu2.pNext = &stu1;

動態(tài)內(nèi)存分配:

Malloc();

void *malloc(unsigned int size)

這個(gè)函數(shù)在內(nèi)存中動態(tài)開辟一塊內(nèi)存,unsigned int size決定內(nèi)存的大小,void *空指針可以強(qiáng)制轉(zhuǎn)換為任何類型的指針蒜焊。

這個(gè)函數(shù)返回一個(gè)指針,這個(gè)指針就是開辟的內(nèi)存地址优妙。

pHead = (structstudents*)malloc(sizeof(structstudents));

free();

void free(void *ptr)

free:釋放內(nèi)存。

free(pHead);

1九妈、怎樣來創(chuàng)建一個(gè)鏈表。

創(chuàng)建一塊內(nèi)存:

struct students *pHead = NULL; //頭指針

struct students *pEnd = NULL; //尾指針

pHead = (struct students *)malloc(sizeof(struct students)); //開辟頭結(jié)點(diǎn)

printf("請輸入一個(gè)學(xué)生的學(xué)號和姓名: ");

scanf("%d%s", &pHead->number, pHead->name);

pHead->pNext = NULL;

printf("%d ", pHead->number);

增:

1、頭部增加:頭結(jié)點(diǎn)會變 需要返回一個(gè)pHead。

2、新節(jié)點(diǎn)的pNext指向pHead。

3耸携、pHead指向pNew。

注意:2和3不能逆序。

//在頭部插入一個(gè)節(jié)點(diǎn)

structstudents *InsertAtHead(structstudents *pHead)

{

//新建一個(gè)節(jié)點(diǎn)

printf(" 在頭部插入一個(gè)節(jié)點(diǎn) ");

structstudents *pNew;

pNew = (structstudents*)malloc(sizeof(structstudents));

printf("請輸入新學(xué)生的信息! ");

scanf("%d%s", &pNew->number, pNew->name);

pNew->pNext = pHead; //讓新節(jié)點(diǎn)的pNext-》原來的頭結(jié)點(diǎn)颊咬。

pHead = pNew; //把pHead指向新節(jié)點(diǎn)

count++; //節(jié)點(diǎn)數(shù)+1

returnpHead;

}

2麸澜、在尾部插入一個(gè)節(jié)點(diǎn)票髓。

1、創(chuàng)建一個(gè)節(jié)點(diǎn)pNew

2、頂一個(gè)中間的指針pTemp 通過循環(huán)(條件為pTemp->pNext踪区!=null).得到尾節(jié)點(diǎn)白粉。

3眷细、pTemp->pNext=pNew;

pNew->pNext=NULL;

在尾部插入一個(gè)節(jié)點(diǎn)

void InsertAtEnd(structstudents *pHead)

{

//新建一個(gè)節(jié)點(diǎn)

printf(" 在尾部插入一個(gè)節(jié)點(diǎn) ");

structstudents *pNew;

pNew = (structstudents*)malloc(sizeof(structstudents));

printf("請輸入新學(xué)生的信息! ");

scanf("%d%s", &pNew->number, pNew->name);

structstudents *pTemp;

pTemp = pHead;

//for (int i = 1; i < count; i++) //節(jié)點(diǎn)數(shù)的值

//{

// pTemp = pTemp->pNext;

//}

//for (; pTemp->pNext != NULL; pTemp = pTemp->pNext);

while (pTemp->pNext != NULL)

{

pTemp = pTemp->pNext;

}

pNew->pNext = NULL;

pTemp->pNext = pNew;

count++; //節(jié)點(diǎn)數(shù)

}

在中間插入

//在中間(第幾個(gè)節(jié)點(diǎn)之后)插入節(jié)點(diǎn)

void InsertAtMid(structstudents *pHead, intindex)

{

//新建一個(gè)節(jié)點(diǎn)

printf(" 在第%d個(gè)節(jié)點(diǎn)后插入一個(gè)節(jié)點(diǎn) ",index);

structstudents *pNew;

pNew = (structstudents*)malloc(sizeof(structstudents));

printf("請輸入新學(xué)生的信息地熄! ");

scanf("%d%s", &pNew->number, pNew->name);

structstudents *pTemp;

structstudents *pPre;

pTemp = pHead;

pPre = pHead;

for (int i = 1; i < index+1; i++) //假設(shè)index=2 需要循環(huán)2次

{

pPre = pTemp;

pTemp = pTemp->pNext;

}

pPre->pNext = pNew;

pNew->pNext = pTemp;

count++;

}

今天小編就詳解到這了哦!感謝大家的分享,小編會持續(xù)更新完C語言基礎(chǔ)的所有章節(jié)扳碍!喜歡的讀者請關(guān)注并轉(zhuǎn)發(fā)荠瘪!留言在評論區(qū)夯巷,小編看到了會回復(fù)大家!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哀墓,一起剝皮案震驚了整個(gè)濱河市趁餐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌篮绰,老刑警劉巖后雷,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吠各,居然都是意外死亡喷面,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門走孽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人琳状,你說我怎么就攤上這事磕瓷。” “怎么了念逞?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵困食,是天一觀的道長。 經(jīng)常有香客問我翎承,道長硕盹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任叨咖,我火速辦了婚禮瘩例,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甸各。我一直安慰自己垛贤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布趣倾。 她就那樣靜靜地躺著聘惦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪儒恋。 梳的紋絲不亂的頭發(fā)上善绎,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天黔漂,我揣著相機(jī)與錄音,去河邊找鬼禀酱。 笑死炬守,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的比勉。 我是一名探鬼主播劳较,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼浩聋!你這毒婦竟也來了观蜗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤衣洁,失蹤者是張志新(化名)和其女友劉穎墓捻,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坊夫,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砖第,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了环凿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梧兼。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖智听,靈堂內(nèi)的尸體忽然破棺而出羽杰,到底是詐尸還是另有隱情,我是刑警寧澤到推,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布考赛,位于F島的核電站,受9級特大地震影響莉测,放射性物質(zhì)發(fā)生泄漏颜骤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一捣卤、第九天 我趴在偏房一處隱蔽的房頂上張望忍抽。 院中可真熱鬧,春花似錦董朝、人聲如沸梯找。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锈锤。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間久免,已是汗流浹背浅辙。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阎姥,地道東北人记舆。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像呼巴,于是被迫代替她去往敵國和親泽腮。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容