建立简单的静态链表

 

/*
 *  建立如上图所示的简单链表,它由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);

}


运行结果:

posted @ 2012-05-16 18:36  江渤洋  阅读(3073)  评论(0编辑  收藏  举报