c语言。大佬们,救救孩子吧,我快被这道题目逼疯了QAQ

一条咸鱼八百里 2019-12-18 05:42:48
题目:
已有a、b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。
第一行,a、b两个链表元素的数量N、M,用空格隔开。
接下来N行是a的数据
然后M行是b的数据
每行数据由学号和成绩两部分组成
输出要求:
按照学号升序排列的数据

我的代码:
#include<stdio.h>
#include<stdlib.h>
#define L sizeof(struct x)
struct x
{
int xue;
int fen;
struct x *next;
};
int n,m,i,k,c;
int main()
{
struct x*heada,*headb;
struct x *p1a,*p2a,*p1b,*p2b,*p,*h;


scanf("%d%d",&n,&m);

p1a=NULL;p2a=p1a;heada=p1a;
if(n>1)p1a=(struct x *)malloc(L),scanf("%d%d",&p1a->xue,&p1a->fen),p2a=p1a,heada=p1a;

for(i=0;i<n-1;i++)
{
p1a=(struct x *)malloc(L);
scanf("%d%d",&p1a->xue,&p1a->fen);
p2a->next=p1a;
p2a=p1a;
}
p1a->next=NULL;//input a
///////////////////////////////////////////////////

//////////////////////////////////////////////////
p1b=NULL;p2b=p1b;headb=p1b;
if(m>1)p1b=(struct x *)malloc(L),scanf("%d%d",&p1b->xue,&p1b->fen),p2b=p1b,headb=p1b;

for(i=0;i<m-1;i++)
{
p1b=(struct x *)malloc(L);
scanf("%d%d",&p1b->xue,&p1b->fen);
p2b->next=p1b;
p2b=p1b;
}
p1b->next=NULL;//input b
p1a->next=headb;
////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////
p=heada;
while(p->next!=NULL)
{
k=p->xue;h=p+1;
while(h->xue!=0)
{
if(k>(*h).xue)
{c=h->xue;h->xue=p->xue;p->xue=c;c=h->fen;h->fen=p->fen;p->fen=c;k=h->xue;}
h=h->next;
}
printf("%d %d\n",p->xue,p->fen);
p=p->next;
}



//////////////////////////////////////////////////////////////////这里排序就错掉了QAQ,程序运行后不输出东西
p=heada;
while(p->xue!=0)
{
printf("%d %d\n",p->xue,p->fen);
p=p->next;
}
return 0;

}




排序部分就错掉了,我不知道错在哪里以及要怎么改。谢谢大家了!QAQ
...全文
49 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
  • 打赏
  • 举报
回复
引用 4 楼 不闻窗外事的回复:
拼接分为表头拼接和表尾拼接,我一般比较喜欢表头拼接,按照我给你发的这个,基本上就可以实现表头拼接,拼出一个链表
好的,我试试。谢谢您!!真的非常感谢!( • ᵕ • )◞♡
不闻窗外事 2019-12-18
  • 打赏
  • 举报
回复
拼接分为表头拼接和表尾拼接,我一般比较喜欢表头拼接,按照我给你发的这个,基本上就可以实现表头拼接,拼出一个链表
不闻窗外事 2019-12-18
  • 打赏
  • 举报
回复
引用 2 楼 一条咸鱼八百里 的回复:
[quote=引用 1 楼 不闻窗外事的回复:]
	for (i = 0; i<n - 1; i++)
{
p1a = (struct x *)malloc(L);
scanf("%d%d", &p1a->xue, &p1a->fen);
p2a->next = p1a;
p2a = p1a;
}


这个地方不对, p1a->next = p2a->next; p2a->next = p1a; 这样拼接,你的拼接都有问题,好好看看;还有,
	if (n>1)
p1a = (struct x *)malloc(L), scanf("%d%d", &p1a->xue, &p1a->fen), p2a = p1a, heada = p1a;

这是你哪个老师教你的这样写程序,每个语句都分开,不要使用,号放在一条语句里

好的!不好意思,再打扰您一下下:请问链表到底应该怎么拼接呀?我看了好久书了,但是还是拼出上述这样的辣鸡东西……[/quote]
不是告诉你了,这样拼接
p1a->next = p2a->next; p2a->next = p1a;
  • 打赏
  • 举报
回复
引用 1 楼 不闻窗外事的回复:
	for (i = 0; i<n - 1; i++)
{
p1a = (struct x *)malloc(L);
scanf("%d%d", &p1a->xue, &p1a->fen);
p2a->next = p1a;
p2a = p1a;
}


这个地方不对, p1a->next = p2a->next; p2a->next = p1a; 这样拼接,你的拼接都有问题,好好看看;还有,
	if (n>1)
p1a = (struct x *)malloc(L), scanf("%d%d", &p1a->xue, &p1a->fen), p2a = p1a, heada = p1a;

这是你哪个老师教你的这样写程序,每个语句都分开,不要使用,号放在一条语句里
好的!不好意思,再打扰您一下下:请问链表到底应该怎么拼接呀?我看了好久书了,但是还是拼出上述这样的辣鸡东西……
不闻窗外事 2019-12-18
  • 打赏
  • 举报
回复
	for (i = 0; i<n - 1; i++)
{
p1a = (struct x *)malloc(L);
scanf("%d%d", &p1a->xue, &p1a->fen);
p2a->next = p1a;
p2a = p1a;
}


这个地方不对, p1a->next = p2a->next; p2a->next = p1a; 这样拼接,你的拼接都有问题,好好看看;还有,
	if (n>1)
p1a = (struct x *)malloc(L), scanf("%d%d", &p1a->xue, &p1a->fen), p2a = p1a, heada = p1a;

这是你哪个老师教你的这样写程序,每个语句都分开,不要使用,号放在一条语句里

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧