一条咸鱼八百里 2019-12-17 09:14 采纳率: 0%
浏览 255

c语言,链表,指针。求大佬指点!谢谢大家了!

题目要求:
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
请按任意键继续. . .

  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2019-12-18 00:29
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler