}
6-1、假设每个学生信息包括学号、姓名和3门课程的考试分数。
从键盘输入10个学生的数据,采用结构体数组数据的存储,程序实现如下功能:
1)输出三门课的平均成绩。
2)输出三门功课分数分别最高的学生的信息。
3)按总分对这10个学生从高到低排序,并输出排序结果。
4)输出平均分高于80分那些学生的信息。
#include
#include
#include
usingnamespacestd;
structstudent
{
intID;
charname[20];
doublescore[3];
};
voidinput(student*,intn);
doubleaverage(student*,intn);
voidprint(student*,intn);
voidsort(student*,intn);
constintstudentNumber=10;
intmain()
{studentstud[10];
input(stud,studentNumber);
print(stud,studentNumber);
.\n";
p2=head=initlist();
cout<<"Pleaseinputanumber(if(-1)stop):
";
cin>>a;
while(a!
=-1)
{
p1=(NODE*)malloc(sizeof(NODE));
p1->data=a;
p2->next=p1;
p2=p1;
cin>>a;
}
p2->next=NULL;
return(head);
}
voidprint(NODE*head)
{NODE*p;
p=head->next;
if(p!
=NULL)
{
cout<<"Outputlist:
";
while(p!
=NULL)
{
cout<data;
p=p->next;
}
cout<<"\n";
}
}
voidsort(NODE*head)
{NODE*p,*n;
inti;
for(n=head->next;n->next!
=NULL;n=n->next)
for(p=head->next;p->next!
=NULL;p=p->next)
if((p->data)>(p->next->data))
{
i=(p->next->data);
p->next->data=p->data;
p->data=i;
}
}
intmain()
{
NODE*L1=NULL;
cout<<"\n\tCreatalist:
\n";
L1=create();
cout<<"排序前为:
";
print(L1);
cout<<"排序后为:
";
sort(L1);
print(L1);
return0;
}
6-6、编写函数merge()将两个非递减序链表合并成一个新的非递减序链表,合并后两个原链表将不存在。
函数原型为:
NODE*merge(NODE*headA,NODE*headB);
#include
#include
#include
usingnamespacestd;
#defineLENsizeof(NODE)
typedefstructnode
{
intdata;
node*next;
}NODE;
.\n";
head=initlist();
cout<<"Pleaseinputanumber(if(-1)exit):
";
cin>>a;
while(a!
=-1)
{
p=(NODE*)malloc(sizeof(NODE));
p->data=a;
insert(head,p);
cin>>a;
}
returnhead;
}
voidprint(NODE*head)
{NODE*p;
p=head->next;
if(p!
=NULL)
{
cout<<"Outputlist:
";
while(p!
=NULL)
{
cout<data;
p=p->next;
}
cout<<"\n";
}
}
voidfree_list(NODE*head)
{NODE*p;
while(head)
{
p=head;
head=head->next;
free(p);
}
}
NODE*merge(NODE*headA,NODE*headB)
{
NODE*p1=headB->next,*p2=p1->next;
while(p2!
=NULL)
{
insert(headA,p1);
p1=p2;
p2=p1->next;
}
insert(headA,p1);
returnheadA;
}
intmain()
{
NODE*p1=NULL,*p2=NULL,*p=NULL;
cout<<"\n\tCreatalist:
\n";
p1=create_sort();
print(p1);
p2=create_sort();
print(p2);
p=merge(p1,p2);
print(p);
return0;
}
6-7、编写函数isSubset()用于判断链表L1中的每个数据元素是否都在链表L2中出现过,若是,则返回真,否则假。
函数原型均为:
boolisSubset(NODE*L1,NODE*L2);
#include
#include
#include
usingnamespacestd;
#defineLENsizeof(NODE)
typedefstructnode
{