建立简单的静态链表
/* * 建立如上图所示的简单链表,它由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); }
运行结果: