list.cpp
字号:
#include<iostream.h>
#include<string.h>
///////构造结构体////////////////////////////////////////////////////////////
struct student
{
int number;
char name[10];
int yuwen;
int shuxue;
int yingyu;
};
struct list
{
student xx;
list * next;
};
////////函数声明//////////////////////////////////////////////////////
void Create(list * & head);
void Find(list * & head);
void Remend(list * & head);
void Del(list * & head);
void Add(list * & head);
void Avg(list * & head);
void Display(list *& head);
void Del_(list *& head);
//////////主函数//////////////////////////////////////////////////////////
void main()
{
int a;
list *l;
while(1)
{
cout<<endl<<"退出程序请输入-------0\n创建链表请输入-------1\n查找请输入-----------2\n添加请输入-----------3\n删除请输入-----------4\n求全班平均输入-------5\n显示全班成绩输入-----6\n修改记录请输入-------7\n删除全部链表请输入---8\n"<<endl;
cin>>a;
cout<<endl;
if(a==0)
break;
if(a==8)
{
Del_(l);
break;
}
switch (a)
{
case 1: Create(l); break; ////输入成绩
case 2: Find(l); break; ////查询成绩
case 3: Add(l); break; ////添加成绩
case 4: Del(l); break; ////删除成绩
case 5: Avg(l); break; ////求平均成绩
case 6: Display(l); break; ////显示所有成绩
case 7: Remend(l);break;
default: cout<<"错误!"<<endl<<endl;
}
}
cout<<"程序结束!"<<endl;
}
//////////创建////////////////////////////////////////////////////
void Create(list * & head)
{
int i=0;
list * New;
list * n;
char a[10];
char qq;
while(1)
{
i++;
New=new list;
if(New==NULL)
cout<<"没有申请到空间!"<<endl;
else
{
cout<<"创建第 "<< i<<" 个记录"<<endl;
cout<<"输入学号:";
cin>>New->xx.number ;
cout<<"输入名字:";
cin>>a;
strcpy(New->xx .name ,a);
cout<<"输入数学成绩:";
cin>>New->xx .shuxue ;
cout<<"输入英语成绩:";
cin>>New->xx .yingyu ;
cout<<"输入语文成绩:";
cin>>New->xx .yuwen ;
cout<<endl<<endl;
New->next =NULL;
if(i==1)
{
head=New;
n=head;
}
else
{
n->next=New;
n=New;
}
cout<<"是否退出创建 Y/N : ";
cin>>qq;
if(qq=='Y' || qq=='y')
{
cout<<endl<<endl;
break;
}
else
continue;
}
}
}
/////////查找///////////////////////////////////////////////////////////
void Find(list * & head)
{
int a;
list *n;
cout<<"请输入要查找的学生学号:"<<endl;
cin>>a;
n=head;
while(1)
{
if(n->xx .number==a)
{
cout<<endl;
cout<<"学生:"<<n->xx .name <<endl;
cout<<"数学:"<<n->xx .shuxue <<endl;
cout<<"英语:"<<n->xx .yingyu <<endl;
cout<<"语文:"<<n->xx .yuwen <<endl;
cout<<"三科平均:"<<(n->xx .shuxue +n->xx .yingyu +n->xx .yuwen )/3<<endl<<endl;
break;
}
else
n=n->next ;
if(n->next ==NULL && n->xx.number!=a)
{
cout<<"抱歉,没有找到你输入的学号!"<<endl;
break;
}
}
}
///////////修改///////////////////////////////////////////////////////////
void Remend(list * & head)
{
int a;
list *n;
cout<<"请输入要修改的学生学号:"<<endl;
cin>>a;
cout<<endl;
n=head;
do
{
if(n->xx .number==a)
{
cout<<"原姓名:"<<n->xx .name<<endl<<"名字改为:";
cin>>n->xx .name;
cout<<"原数学成绩:"<<n->xx .shuxue<<endl<<"数学改为:";
cin>>n->xx .shuxue ;
cout<<"原英语成绩:"<<n->xx .yingyu<<endl<<"英语改为:";
cin>>n->xx .yingyu ;
cout<<"原语文成绩:"<<n->xx .yuwen<<endl<<"语文改为:";
cin>>n->xx .yuwen ;
cout<<endl;
break;
}
else
n=n->next ;
if(n->next ==NULL && n->xx.number!=a)
{
cout<<"抱歉,没有找到你输入的学号!"<<endl<<endl;
break;
}
} while(1);
}
//////////删除/////////////////////////////////////////////////////////////////
void Del(list * & head)
{
int a;
list *n;
list *p,*r;
cout<<"请输入要删除的学生学号:";
cin>>a;
cout<<endl;
n=head;
p=n;
do
{
if(n->xx .number ==0)
cout<<"你还没有创建链表,没法删除!"<<endl;
else
{
if(p->xx .number==a)
{
if(p==head)
{
r=p;
p=p->next ;
delete r;
head=p;
break;
}
else
{
r->next =p->next ;
delete p;
break;
}
}
else
{
r=p;
p=p->next ;
}
}
if(n->next==NULL && n->xx.number!=a)
{
cout<<"抱歉,没有找到你输入的学号!"<<endl;
break;
}
} while(1);
}
/////////添加///////////////////////////////////////////////////////
void Add(list * & head)
{
list *p;
list *n;
p=head;
while(p->next !=NULL)
{
p=p->next ;
}
n=new list;
if(n==NULL)
cout<<"没有分到内存空间!"<<endl<<endl;
else
{
cout<<"请输入\n学号:"<<endl;
cin>>n->xx.number;
cout<<"学生:";
cin>>n->xx .name;
cout<<"数学:";
cin>>n->xx .shuxue ;
cout<<"英语:";
cin>>n->xx .yingyu ;
cout<<"语文:";
cin>>n->xx .yuwen ;
n->next =NULL;
cout<<endl<<endl;
}
p->next =n;
}
/////////求平均///////////////////////////////////////////////////////////
void Avg(list * & head)
{
int sh=0,yi=0,yu=0,k=0;
list *n;
n=head;
while(n->next !=NULL)
{
sh +=n->xx.shuxue;
yi +=n->xx.yingyu;
yu +=n->xx.yuwen;
n=n->next ;
++k;
}
if(k==0)
cout<<"对不起,链表不存在!"<<endl;
else
{
cout<<"数学平均分:"<<sh/k <<endl;
cout<<"英语平均分:"<<yi/k<<endl;
cout<<"语文平均分:"<<yu/k<<endl;
cout<<"全班平均分:"<<(sh+yi+yu)/k<<endl<<endl;
}
}
/////////显示//////////////////////////////////////////////////////////////
void Display(list * & head)
{
list * n;
n=head;
int i=0;
do
{
cout<<"学号:"<<n->xx.number<<endl;
cout<<"学生:"<<n->xx .name<<endl;
cout<<"数学:"<<n->xx .shuxue<<endl ;
cout<<"英语:"<<n->xx .yingyu<<endl ;
cout<<"语文:"<<n->xx .yuwen<<endl ;
cout<<endl<<"------------------"<<endl<<endl;
n=n->next ;
i++;
}while(n->next !=NULL);
cout<<"学号:"<<n->xx.number<<endl;
cout<<"学生:"<<n->xx .name<<endl;
cout<<"数学:"<<n->xx .shuxue<<endl ;
cout<<"英语:"<<n->xx .yingyu<<endl ;
cout<<"语文:"<<n->xx .yuwen<<endl ;
cout<<endl<<"------------------"<<endl<<endl;
cout<<"共 "<<i+1<<" 名学生"<<endl<<endl;
}
void Del_(list * & head)
{
list *p,*r;
p=head;
while(p->next!=NULL)
{
r=p;
p=p->next;
delete r;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -