?? 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 + -