解题思路:
注意事项:
参考代码:
#include<stdio.h>
#include<malloc.h>
typedef struct LNode{
int no; //序号
int score; // 分数
struct LNode *next; //节点尾指针,指向下一节点的地址,必须定义
}LNode;
LNode *create(int x){ //创建链式线性表,因为返回的是指针类型,所以要用到 *
LNode *p,*s,*h;
int i;
h=(LNode *)malloc(sizeof(LNode)); //申请一个表头节点,并对其进行初始化
h->score=0;
h->next=NULL;
p=h;
for(i=0;i<x;i++){
s=(LNode *)malloc(sizeof(LNode)); //采用尾插法建立单链表,s为开始节点
s->next=NULL;
scanf("%d%d",&s->no,&s->score);
p->next=s;
p=s;
}
return h;
}
int main(){
LNode *h0,*h1,*h2,*h3,*b;
int M,N,i,j,a[100],t;
scanf("%d %d",&M,&N);
h0=create(M);
h2=h0;
h3=h0;
h1=create(N);
for(i=0;i<M;i++)
h0=h0->next;
h0->next=h1->next;
for(i=0;i<M+N;i++){
h2=h2->next;
a[i]=h2->no;
}
for(i=0;i<M+N-1;i++){ //利用选择排序法对序号进行排序,当然也可以用其他排序方法
for(j=i+1;j<M+N;j++)
if(a[j]<a[i]){
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
for(i=0;i<M+N;i++){
b=h3->next;
for(j=0;j<M+N;j++){
if(b->no==a[i])
printf("%d %d\n",a[i],b->score); //按照序号由小大大依次输出
b=b->next;
}
}
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:553 |
A+B for Input-Output Practice (VI) (C++代码)浏览:445 |
成绩转换 (C语言代码)浏览:1048 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:863 |
P1000 (C语言代码)浏览:911 |
C语言程序设计教程(第三版)课后习题12.2 (C语言代码)浏览:839 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:609 |
简单的a+b (C语言代码)浏览:444 |
字符逆序 (C语言代码)浏览:541 |
C语言程序设计教程(第三版)课后习题7.3 (C++代码)浏览:483 |