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