一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C語言基礎(chǔ)——鏈表詳解!

 豫龍晏子 2017-02-09

鏈表:

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

C語言基礎(chǔ)——鏈表詳解!


C語言基礎(chǔ)——鏈表詳解!

靜態(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)

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

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

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

free();

void free(void *ptr)

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

free(pHead);

C語言基礎(chǔ)——鏈表詳解!

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

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

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

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

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

printf('請輸入一個學(xué)生的學(xué)號和姓名:\n');

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

pHead->pNext = NULL;

printf('%d\n', pHead->number);

增:

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

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

3、pHead指向pNew。

注意:2和3不能逆序。

//在頭部插入一個節(jié)點

structstudents *InsertAtHead(structstudents *pHead)

{

//新建一個節(jié)點

printf('\n\n在頭部插入一個節(jié)點\n');

structstudents *pNew;

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

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

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

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

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

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

returnpHead;

}

C語言基礎(chǔ)——鏈表詳解!

2、在尾部插入一個節(jié)點。

1、創(chuàng)建一個節(jié)點pNew

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

3、pTemp->pNext=pNew;

pNew->pNext=NULL;

在尾部插入一個節(jié)點

void InsertAtEnd(structstudents *pHead)

{

//新建一個節(jié)點

printf('\n\n在尾部插入一個節(jié)點\n');

structstudents *pNew;

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

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

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

structstudents *pTemp;

pTemp = pHead;

//for (int i = 1; i < count;="" i++)="">

//{

// 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é)點數(shù)

}

C語言基礎(chǔ)——鏈表詳解!

在中間插入

//在中間(第幾個節(jié)點之后)插入節(jié)點

void InsertAtMid(structstudents *pHead, intindex)

{

//新建一個節(jié)點

printf('\n\n在第%d個節(jié)點后插入一個節(jié)點\n',index);

structstudents *pNew;

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

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

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">

{

pPre = pTemp;

pTemp = pTemp->pNext;

}

pPre->pNext = pNew;

pNew->pNext = pTemp;

count++;

}

C語言基礎(chǔ)——鏈表詳解!

C語言基礎(chǔ)——鏈表詳解!

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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    精品人妻久久一品二品三品 | 人妻中文一区二区三区| 亚洲精品国产精品日韩| 日韩欧美在线看一卡一卡| 亚洲欧美国产网爆精品| 亚洲高清亚洲欧美一区二区| 久久综合九色综合欧美| 五月婷婷六月丁香亚洲| 最新日韩精品一推荐日韩精品| 老司机精品视频在线免费| 91麻豆精品欧美视频| 亚洲综合激情另类专区老铁性| 欧美成人免费夜夜黄啪啪| 亚洲国产成人av毛片国产| 97人妻精品一区二区三区男同| 一二区不卡不卡在线观看| 国产午夜精品在线免费看| 国产欧美日韩在线一区二区| 麻豆果冻传媒一二三区| 欧美日韩有码一二三区| 欧美黑人黄色一区二区| 欧美一区日韩一区日韩一区| 成人区人妻精品一区二区三区| 午夜福利网午夜福利网| 国产白丝粉嫩av在线免费观看 | 欧洲自拍偷拍一区二区| 高清亚洲精品中文字幕乱码| 欧美日韩国产综合在线| 日韩人妻免费视频一专区| 亚洲中文字幕剧情在线播放| 精品欧美在线观看国产| 亚洲视频在线观看免费中文字幕 | 国产精品成人一区二区三区夜夜夜| 国产老熟女超碰一区二区三区| 日本女优一区二区三区免费| 日韩精品视频一二三区| 国产av乱了乱了一区二区三区| 欧美成人黄色一区二区三区| 欧美激情一区二区亚洲专区| 国产精品免费自拍视频| 中文字幕精品一区二区年下载|