C語言鏈表概述
鏈表是一種常見的重要的數(shù)據(jù)結(jié)構(gòu)。它是動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配的一種結(jié)構(gòu),是根據(jù)需要開辟內(nèi)存單元。
鏈表有一個(gè)“頭指針”變量,它存放一個(gè)地址,該地址指向一個(gè)元素。
鏈表中每一個(gè)元素稱為“結(jié)點(diǎn)”,每個(gè)結(jié)點(diǎn)都應(yīng)包括兩個(gè)部分
- 用戶需要的實(shí)際數(shù)據(jù)。
- 下一個(gè)結(jié)點(diǎn)的地址。
鏈表中各元素在內(nèi)存中的地址可以是不連續(xù)的。
要找某一元素,必須先找到上一個(gè)元素,根據(jù)它提供的下一元素地址才能找到下一個(gè)元素。如果不提供“頭指針”,則整個(gè)鏈表都無法訪問。
鏈表如同一條鐵鏈一樣,一環(huán)扣一環(huán),中間是不能斷開的。
鏈表這種數(shù)據(jù)結(jié)構(gòu),必須利用指針變量才能實(shí)現(xiàn),即一個(gè)結(jié)點(diǎn)中應(yīng)包含一個(gè)指針變量,用它存放下一結(jié)點(diǎn)的地址。
C語言使用鏈表輸出學(xué)號(hào)和成績(jī)
#include//頭文件
struct student //定義學(xué)生結(jié)構(gòu)體
{
int num;//學(xué)號(hào)
float score;//成績(jī)
struct student *next;
};
int main()//主函數(shù)
{
struct student str1,str2,str3;//定義結(jié)構(gòu)體變量
struct student *head,*point;//定義結(jié)構(gòu)體指針變量
str1.num=1;
str1.score=90.8;
str2.num=2;
str2.score=90.0;
str3.num=3;
str3.score=85.0;
head=&str1;//將第1個(gè)結(jié)點(diǎn)的起始地址賦給頭指針head
str1.next=&str2;//將第2個(gè)結(jié)點(diǎn)的起始地址賦給第1個(gè)結(jié)點(diǎn)的next成員
str2.next=&str3;//將第3個(gè)結(jié)點(diǎn)的起始地址賦給第2個(gè)結(jié)點(diǎn)的next成員
str3.next=NULL;//第3個(gè)結(jié)點(diǎn)的next成員賦給null
point=head;
do
{
printf("%d %3.1f\\n",point->num,point->score);//輸出結(jié)果
point=point->next;
}
while(point!=NULL);
return 0;//主函數(shù)返回值為0
}
編譯運(yùn)行結(jié)果:
1 90.8
2 90.0
3 85.0
--------------------------------
Process exited after 0.1073 seconds with return value 0
請(qǐng)按任意鍵繼續(xù). . .
-
內(nèi)存
+關(guān)注
關(guān)注
8文章
3028瀏覽量
74082 -
數(shù)據(jù)結(jié)構(gòu)
+關(guān)注
關(guān)注
3文章
573瀏覽量
40137
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論