建立一个无序链表,每一个节点包含:学号,姓名,年龄和数学成绩。要求编写实现如下操作的四个函数::
答案:2 悬赏:70 手机版
解决时间 2021-03-21 18:44
- 提问者网友:贪了杯
- 2021-03-21 03:49
建立链表, 输出链表中个节点的值, 删除具有某个学号的节点 , 在某个位置插入节点, 释放链表中节点所占用的动态存储空间
最佳答案
- 五星知识达人网友:北城痞子
- 2021-03-21 05:21
#include
#define N 4 //N为人数,自设
struct node{
char name[10];
long snumber;
int englishscore;
int mathscore;
int vcscore;
struct node*next;
};
class scorelist{
private:
node*head;
public:
scorelist()
scorelist(int n);//建立人数为n的成绩链表
void buildlist(int n);//同上通过调用函数,重新建立成绩表
void insertlist(node*no,int place);//链表结点的插入
void deletelist(int place);//链表结点的删除
void outputlist();//输出所有人的信息及成绩
void outputavgmaxscorestu();//输出平局成绩最大的人的信息及成绩和平局成绩
node*Gethead() //第一人信息
};
scorelist::scorelist(int n)
{
node*p;
head=new node;
p=head;
while(n!=1)
{
cin>>p->name>>p->snumber>>p->englishscore>>p->mathscore>>p->vcscore;
p->next=new node;
p=p->next;
n--;
}
cin>>p->name>>p->snumber>>p->englishscore>>p->mathscore>>p->vcscore;
p->next=NULL;
}
void scorelist::buildlist(int n)
{
node*p;
head=new node;
p=head;
while(n!=1)
{
cin>>p->name>>p->snumber>>p->englishscore>>p->mathscore>>p->vcscore;
p->next=new node;
p=p->next;
n--;
}
cin>>p->snumber>>p->englishscore>>p->mathscore>>p->vcscore;
p->next=NULL;
}
void scorelist::outputavgmaxscorestu()
{
if(head==NULL)
else{
double temp,avgmax(0);
node*p;
node*s;
s=head;
p=head;
while(p!=NULL)
{
temp=(p->englishscore+p->mathscore+p->vcscore)/3.0;
if(temp>avgmax)
{
avgmax=temp;
}
p=p->next;
}
while(s!=NULL)
{
temp=(s->englishscore+s->mathscore+s->vcscore)/3.0;
if(temp==avgmax)
{
cout<name<<" "<snumber<<" "<englishscore<<" "<mathscore<<" "<vcscore<<" "
}
}
}
void scorelist::outputlist()
{
node*p;
p=head;
while(p!=NULL)
{
cout<name<<" "<snumber<<" "<englishscore<<" "<mathscore<<" "<vcscore;
cout<
p=p->next;
}
}
void main()
{
cout<<"请输入"<
scorelist sl(N);
cout<<"所有人成绩信息为:"<
sl.outputlist();
cout<<"平局成绩最高的有:"<
cout<<"姓名|"<<"学号|"<<"英语成绩|"<<"数学成绩|"<<"C++成绩|"<<"平局成绩"<
sl.outputavgmaxscorestu();
}
//只要改变N就可以达到N人的数据输入和输出
#define N 4 //N为人数,自设
struct node{
char name[10];
long snumber;
int englishscore;
int mathscore;
int vcscore;
struct node*next;
};
class scorelist{
private:
node*head;
public:
scorelist()
scorelist(int n);//建立人数为n的成绩链表
void buildlist(int n);//同上通过调用函数,重新建立成绩表
void insertlist(node*no,int place);//链表结点的插入
void deletelist(int place);//链表结点的删除
void outputlist();//输出所有人的信息及成绩
void outputavgmaxscorestu();//输出平局成绩最大的人的信息及成绩和平局成绩
node*Gethead() //第一人信息
};
scorelist::scorelist(int n)
{
node*p;
head=new node;
p=head;
while(n!=1)
{
cin>>p->name>>p->snumber>>p->englishscore>>p->mathscore>>p->vcscore;
p->next=new node;
p=p->next;
n--;
}
cin>>p->name>>p->snumber>>p->englishscore>>p->mathscore>>p->vcscore;
p->next=NULL;
}
void scorelist::buildlist(int n)
{
node*p;
head=new node;
p=head;
while(n!=1)
{
cin>>p->name>>p->snumber>>p->englishscore>>p->mathscore>>p->vcscore;
p->next=new node;
p=p->next;
n--;
}
cin>>p->snumber>>p->englishscore>>p->mathscore>>p->vcscore;
p->next=NULL;
}
void scorelist::outputavgmaxscorestu()
{
if(head==NULL)
else{
double temp,avgmax(0);
node*p;
node*s;
s=head;
p=head;
while(p!=NULL)
{
temp=(p->englishscore+p->mathscore+p->vcscore)/3.0;
if(temp>avgmax)
{
avgmax=temp;
}
p=p->next;
}
while(s!=NULL)
{
temp=(s->englishscore+s->mathscore+s->vcscore)/3.0;
if(temp==avgmax)
{
cout<
}
}
void scorelist::outputlist()
{
node*p;
p=head;
while(p!=NULL)
{
cout<
cout<
}
}
void main()
{
cout<<"请输入"<
cout<<"所有人成绩信息为:"<
cout<<"平局成绩最高的有:"<
}
//只要改变N就可以达到N人的数据输入和输出
全部回答
- 1楼网友:北方的南先生
- 2021-03-21 05:37
给你个有关链表的例子吧,你参考一下,自己写出完整的程序,有问题可以提问
#include
#include
#define LEN sizeof(struct Stu)
typedef struct Stu{
char name[20];
char sex[10];
char dep[20];
int number;
struct Stu *next;
}sqlist;
sqlist *inlist()
{
sqlist *p,*q;
sqlist *head;
printf("请输入名字 性别 部门 学号:\n");
q=p=head=(sqlist*)malloc(LEN);
scanf("%s%s%s%d",p->name,p->sex,p->dep,&p->number);
while(p->number!=0)
{
q->next=p;
q=p;
p=(sqlist*)malloc(LEN);
scanf("%s%s%s%d",p->name,p->sex,p->dep,&p->number);
}
q->next=NULL;
free(p);
return head;
}
void addNode(sqlist *head,sqlist *newNode)
{
sqlist *f;
f=head;
while(f->next!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯