建立简单的静态链表

/*
* 建立如上图所示的简单链表,它由3个学生数据结点组成,要求输出各结点中的数据。
*
* 解题思路: 声明一个结构体类型,其成员包括studentNumber(学号),score(成绩),next(指针变量);
* 将第一个结点的起始地址赋给头指针head;
* 将第二个结点的起始地址赋给第一个结点的next成员;
* 将第三个结点的起始地址赋给第二个结点的next成员;
* 将第三个结点的next成员赋值为NULL。
* 注:所有结点都是在程序中定义的,不是临时开辟的,也不能用完后释放,这种链表称为“静态链表”
*/
#include<iostream>
#include<string>
using namespace std;
/*
* 声明结构体类型struct Student的结点
* 注:只是定义一个struct Student类型,并未实际分配存储空间,只有定义了变量才分配存储空间。
*/
struct Student
{
//定义学号变量
string studentNumber;
//定义成绩变量
float score;
//next是指针变量,指向结构体变量
struct Student *next;
};
void main()
{
//定义3个结构体变量
struct Student student_1, student_2, student_3;
//定义head头指针变量,指向链表的第一个结点
struct Student *head;
//定义临时的指针变量
struct Student *pointer;
//分别对3个结点的成员变量studentNumber和score赋值
student_1.studentNumber="20110113400029"; student_1.score=89.5;
student_2.studentNumber="20110113400064"; student_2.score=90;
student_3.studentNumber="20110113400074"; student_3.score=85;
//将结点student_1的起始地址赋给头指针head
head=&student_1;
//将结点student_2的起始地址赋给student_1的next成员
student_1.next=&student_2;
//将结点student_3的起始地址赋给student_2的next成员
student_2.next=&student_3;
//将student_3的next成员不存放其他结点地址
student_3.next=NULL;
//是pointer也指向student_1结点
pointer=head;
do
{
//输出pointer指向的结点的数据
cout<<" 学号: "<<pointer->studentNumber<<"\t"<<"成绩: "<<pointer->score<<endl;
//使pointer指向下一个结点
pointer=pointer->next;
//输出完student_3结点后的pointer为NULL,循环结束
}while(pointer!=NULL);
}
运行结果:


浙公网安备 33010602011771号