题目要求:
1.已有a、b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。
2.第一行,a、b两个链表元素的数量N、M,用空格隔开。
接下来N行是a的数据
然后M行是b的数据
每行数据由学号和成绩两部分组成
3.按照学号升序排列的数据
我的代码:#include
#include
struct x
{
int xue;
int fen;
struct x *next;
};
int n,m,i,k=100000;
int main()
{
scanf("%d%d",&n,&m);
struct x a[n],b[m],c,*head,*p,*h;
for(i=0;i<n;i++)
{
scanf("%d%d",&a[i].xue,&a[i].fen);
}
for(i=0;i<m;i++)
{
scanf("%d%d",&b[i].xue,&b[i].fen);
}
for(i=0;i<n-1;i++)
{
a[i].next=&a[i+1];
}
a[n-1].next=&b[0];
for(i=0;i<m-1;i++)
{
b[i].next=&b[i+1];
}
b[m-1].next=NULL;
for(p=a;(*p).xue!=0;p++)
{
k=p->xue;
for(h=p+1;h->xue!=0;h++)
{
if(k>(*h).xue)c=*h,*h=*p,*p=c;
}
}
for(p=a;p->xue!=0;p++)
printf("%d %d\n",p->xue,p->fen);
return 0;
}
错误情况:输出的一部分是乱码
如下(有时候又是第二、三行数据输出正常,第一、四、五行输出乱码):
2 3
2 34
3 45
5 67
4 56
7 89//这一部分是我的输入
2 34
3 45
236528581 4199040
4210712 4210708
1955488802 4199236
请按任意键继续. . .