实验目的:学会建立动态链表
实验内容:学会建立动态链表* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: 动态链表
* 作 者: 薛广晨
* 完成日期: 2011 年 12 月 15 日
* 版 本号: x1.0
* 对任务及求解方法的描述部分
* 输入描述:数据来自score.txt
* 问题描述:
(1)结构体中的成员多些;
(2)从文件中读入数据;
(3)一边读数据一边得计算总分,为计算总分的平均值也得做些准备;
(4)并不是输出所有的节点
* 程序输出:所有的节点
* 程序头部的注释结束(此处也删除了斜杠)
//下面是程序
#include <fstream>
#include"iomanip"
#include<string>
#include<iostream>
using namespace std;
struct Student
{
string num;
char name[12];
double grade[3];
double score;
struct Student *next;
};
int num=180;
Student *head=NULL,*p,*q;
int main()
{
//从文件读入学生成绩的结构体数组;
//下面的程序建立起一个有180个节点的动态链表
ifstream infile("score.txt",ios::in);
for(int i=0;i<num;i++)
{
p = new Student;
if(!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
{
infile>>p->num>>p->name>>p->grade[0]>>p->grade[1]>>p->grade[2];
p->score=p->grade[0]+p->grade[1]+p->grade[2];
}
p->next=NULL;
if (i==0)
head=p;
else
q->next=p;
q=p;
}
infile.close();
//输出所有的节点
p=head;
cout<<"学号"<<'\t'<<'\t'<<setiosflags(ios::left)<<setw(9)<<"姓名"<<setw(7)<<"C++"<<setw(8)<<"高数"<<setw(8)<<"英语"<<setw(8)<<"总分"<<endl;
while(p!=NULL)
{
cout<<p->num<<" "<<setw(8)<<p->name<<": "<<p->grade[0]<<"\t"<<p->grade[1]<<"\t"<<p->grade[2]<<"\t"<<p->score<<endl;
p=p->next;
}
return 0;
}
经验积累:
1.动态链表把所有的数都连了起来,只用找到头所有的都出来啦
2.链表就像是螳螂捕蝉黄雀在后啊
上机感言:链表很爽啊,只要是找到头谁都跑不了啊