上QQ阅读APP看书,第一时间看更新
1.2 简单静态链表
下面的代码实现的是一个简单静态链表,它由3个存储学生数据(学号、成绩)的节点组成。请考虑:(1)head的作用;(2)p的作用。
1 // 简单静态链表
2 #include <bits/stdc++.h>
3 using namespace std;
4
5 struct student
6 {
7 long num; //学号
8 float score; //成绩
9 struct student *next; //该指针指向student类型的结构体
10 }; //注意必须有分号
11
12 int main()
13 {
14 struct student a,b,c;
15 a.num=34341; //a学生赋值
16 a.score=81.5;
17 b.num=34343; //b学生赋值
18 b.score=97;
19 c.num=34344; //c学生赋值
20 c.score=82;
21 struct student *head=&a; //head指向a的地址
22 a.next=&b; //将b的地址赋给a.next,即连接下一结构体元素
23 b.next=&c;
24 c.next=NULL; //最后一个元素指向空地址
25 struct student *p=head; //定义指针变量p指向head
26 do //输出记录
27 {
28 cout<<p->num<<" "<<p->score<<endl;
29 p=p->next; //p指向下一节点
30 } while(p!=NULL);
31 return 0;
32 }
head是“头指针”变量,指向链表中的第一个节点地址,这相当于“幼儿园教师”拉着第一个“小朋友”的手。输出链表中每个节点的值相当于登记小朋友的名字,但是这件事教师是不适合亲自做的,因为她必须时刻拉着小朋友的手,否则小朋友就有可能会跑得找不到人影(链表地址丢失)。p是教师的“助手”,所以由p从教师的位置开始向后一步步移动以登记小朋友的名字。