静态链表指的是先确定结点个数,然后根据指定个数而创建的链表,所有结点不是临时开辟的,用完不能释放。下面通过一个例子来说明怎样建立静态链表。
【例8.7】建立如图8.12的简单链表,包括三个存储学生数据的结点,输出学生数据。
程序内容如下:
1 /*这是一个有关于静态链表知识讲解的事例程序*/
2 #include<stdio.h>
3 struct Student
4 {
5 int num;
6 float score;
7 struct Student*next;
8 };
9 int main()
10 {
11 struct Student a,b,c,*head,*p;
12 a.num=201801; a.score=88;
13 b.num=201804; b.score=92;
14 c.num=201806; c.score=60;
15 head=&a; (www.xing528.com)
16 a.next=&b;
17 b.next=&c;
18 c.next=NULL;
19 p=head;
20 do
21 {
22 printf("%ld%5.1f\n",p->num,p->score);
23 p=p->next;
24 }while(p!=NULL);
25 return 0;
26 }
程序结果如图8.13所示:
图8.13 例8.7程序结果图
【例题中关键问题说明】
(1)本程序中,定义了3个结构体变量a、b、c,用来存放学生数据,通过指针类型成员next来存放下一个结点的地址,从而构建链表。
(2)head指向头结点,在输出链表时借助指针p,先使p指向a结点,输出a结点数据,再执行p->next,指向b结点,输出b结点数据,直至p指向为NULL,表示最后一个结点,跳出循环。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。