//一共三个结构,一个是学生的信息即struct Stu包括学生的基本信息和显示信息建立信息的函数,
//一个是节点struct Node,包括数据项学生和指针域
//一个是链表struct Line,包括增加节点函数enstudent(const Item & s),判断链表空满的函数
//删除节点函数destudent() ,查询节点函数Node * search() ,修改节点函数void alter()
//查找并显示函数void find()
//除了三个结构还有两个函数 void showLine(Line * a) ,显示全部学生信息
//和 void newstudent(Line & b) ,增加学生个数 这两个都在main()函数中使用
#include<iostream.h>
struct Stu //学生信息的结构
{
int id;
char name[30];
float score;
void show()const //显示学生的信息
{
cout<<"学生信息:\n学号:"<<id<<"\n姓名:"
<<name<<"\n分数"<<score<<endl;
}
void set() //新建学生信息
{
cout<<"请输入学号,姓名,分数\n ";
cin>>id>>name>>score;
}
};
typedef Stu Item; //让Item成为Stu的别名,看起来清楚一点,虽然Stu也比较短
struct Node //链表的节点
{
Item item; //数据项
Node * next; //节点的指针域
};
struct Line //链表主体
{
Node * front; //头节点
Node * rear; //尾节点
int items; //新建的节点数,后面用来判断链表是否为空或满
int max; //最大节点数,由用户输入
bool isfull() //判断链表是否为满,即满时节点数items和最大节点数max相等,是就返回true
{
return items==max;
}
bool isempty() //判断链表是否为空
{
return items==0;
}
bool enstudent(const Item & s) //增加新节点
{
if(isfull()) //先判断链表是不是满的,满的返回false表示无法加入新节点
return false;
Node * add = new Node; //new动态创建一个节点Node空间,用add标记
if(add==NULL) //如果创建后add没有空间,即add==NULL,表示分配空间时失败,返回false
return false;
add->item=s; //把add节点的数据项置为传入的Item类型的s,指针置为空&
数据结构实验1 链表 实现学生信息存储,功能 增删改查,实现 结构类型
最新推荐文章于 2023-06-15 08:52:54 发布