#include <iostream>
#include <string>
using namespace std;
struct Node
{
int num;
string name;
string sex;
int age;
double score;
Node *next;
};
Node* create(int n)
{
int i;
Node *head=NULL,*p,*q;
p=head;
q=head;
for(i=0;i<n;i++)
{
q=new Node;
cout<<"请输入第"<<i+1<<"个学生的信息:";
cin>>q->num>>q->name>>q->sex>>q->age>>q->score;
if(i==0)
{
head=q;
q->next=NULL;
p=q;
}
else
{
q->next=NULL;
p->next=q;
p=q;
}
}
return head;
}
void print(Node *head)
{
int i=1;
Node *p;
p=head;
if(p==NULL) cout<<"没有学生信息!"<<endl;
else
{
while(p!=NULL)
{
cout<<"第"<<i<<"个学生的信息为: 学号:"<<p->num<<" 姓名:"<<p->name;
cout<<" 性别:"<<p->sex<<" 年龄:"<<p->age<<" 成绩:"<<p->score<<endl;
i++;
p=p->next;
}
}
}
Node* deleteNode(Node *head,int number)
{
Node *p,*q;
p=head;
q=NULL;
while(p!=NULL)
{
if(p->num==number)
{
if(p==head)
{
head=p->next;
break;
}
else
{
q->next=p->next;
break;
}
}
q=p;
p=p->next;
}
if(p==NULL)
{
cout<<"没有该学号的学生的信息!"<<endl;
return head;
}
else
{
cout<<"删除成功!"<<endl;
delete p;
return head;
}
}
Node* insert(Node *head)
{
Node *p,*q;
p=head;
q=new Node;
if(p==NULL&&q)
{
cout<<"请输入学生信息:"<<endl;
cin>>q->num>>q->name>>q->sex>>q->age>>q->score;
q->next=NULL;
head=q;
}
else
{
while(p->next!=NULL) p=p->next;
if(q)
{
cout<<"请输入学生信息:"<<endl;
cin>>q->num>>q->name>>q->sex>>q->age>>q->score;
q->next=NULL;
p->next=q;
}
}
return head;
}
int main()
{
Node *head;
int n,flag,number;
cout<<"请输入学生的人数n:";
cin>>n;
while(n<=0)
{
cout<<"学生人数应大于0,请重新输入!"<<endl;
cin>>n;
}
cout<<"请输入每个学生的信息(按学号、姓名、性别、年龄,成绩顺序输入):"<<endl;
head=create(n);
while(1)
{
cout<<"按1输出各学生的信息,按2删除指定学号的学生的信息,按3插入新的学生信息,按4退出程序:"<<endl;
cin>>flag;
switch(flag)
{
case 1:print(head);break;
case 2:cout<<"请输入要删除的学生的学号:";cin>>number;head=deleteNode(head,number);break;
case 3:head=insert(head);break;
case 4:return 0;
default:cout<<"输入不正确请重新输入!";break;
}
}
return 0;
}
#include <string>
using namespace std;
struct Node
{
int num;
string name;
string sex;
int age;
double score;
Node *next;
};
Node* create(int n)
{
int i;
Node *head=NULL,*p,*q;
p=head;
q=head;
for(i=0;i<n;i++)
{
q=new Node;
cout<<"请输入第"<<i+1<<"个学生的信息:";
cin>>q->num>>q->name>>q->sex>>q->age>>q->score;
if(i==0)
{
head=q;
q->next=NULL;
p=q;
}
else
{
q->next=NULL;
p->next=q;
p=q;
}
}
return head;
}
void print(Node *head)
{
int i=1;
Node *p;
p=head;
if(p==NULL) cout<<"没有学生信息!"<<endl;
else
{
while(p!=NULL)
{
cout<<"第"<<i<<"个学生的信息为: 学号:"<<p->num<<" 姓名:"<<p->name;
cout<<" 性别:"<<p->sex<<" 年龄:"<<p->age<<" 成绩:"<<p->score<<endl;
i++;
p=p->next;
}
}
}
Node* deleteNode(Node *head,int number)
{
Node *p,*q;
p=head;
q=NULL;
while(p!=NULL)
{
if(p->num==number)
{
if(p==head)
{
head=p->next;
break;
}
else
{
q->next=p->next;
break;
}
}
q=p;
p=p->next;
}
if(p==NULL)
{
cout<<"没有该学号的学生的信息!"<<endl;
return head;
}
else
{
cout<<"删除成功!"<<endl;
delete p;
return head;
}
}
Node* insert(Node *head)
{
Node *p,*q;
p=head;
q=new Node;
if(p==NULL&&q)
{
cout<<"请输入学生信息:"<<endl;
cin>>q->num>>q->name>>q->sex>>q->age>>q->score;
q->next=NULL;
head=q;
}
else
{
while(p->next!=NULL) p=p->next;
if(q)
{
cout<<"请输入学生信息:"<<endl;
cin>>q->num>>q->name>>q->sex>>q->age>>q->score;
q->next=NULL;
p->next=q;
}
}
return head;
}
int main()
{
Node *head;
int n,flag,number;
cout<<"请输入学生的人数n:";
cin>>n;
while(n<=0)
{
cout<<"学生人数应大于0,请重新输入!"<<endl;
cin>>n;
}
cout<<"请输入每个学生的信息(按学号、姓名、性别、年龄,成绩顺序输入):"<<endl;
head=create(n);
while(1)
{
cout<<"按1输出各学生的信息,按2删除指定学号的学生的信息,按3插入新的学生信息,按4退出程序:"<<endl;
cin>>flag;
switch(flag)
{
case 1:print(head);break;
case 2:cout<<"请输入要删除的学生的学号:";cin>>number;head=deleteNode(head,number);break;
case 3:head=insert(head);break;
case 4:return 0;
default:cout<<"输入不正确请重新输入!";break;
}
}
return 0;
}