问题 B: C语言-链表排序
时间限制: 1 Sec 内存限制: 128 MB
提交: 54 解决: 48
题目描述
已有a、b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。
输入
第一行,a、b两个链表元素的数量N、M,用空格隔开。 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和成绩两部分组成
输出
按照学号升序排列的数据
样例输入
2 3
5 100
6 89
3 82
4 95
2 10
样例输出
2 10
3 82
4 95
5 100
6 89
经验总结
没啥可以总结的。。。看代码吧 ( 。ớ ₃ờ)ھ
正确代码
#include <cstdio>
struct node
{
int number;
int grade;
node * next;
};
int main()
{
int m,n;
while(~scanf("%d %d",&m,&n))
{
node * L=new node;
L->next=NULL;
for(int i=0;i<m+n;i++)
{
node * temp=new node;
scanf("%d %d",&temp->number,&temp->grade);
node * pre=L;
node * p=L->next;
while(p!=NULL)
{
if(temp->number<p->number)
{
break;
}
else
{
pre=p;
p=p->next;
}
}
temp->next=pre->next;
pre->next=temp;
}
node * p=L->next;
while(p!=NULL)
{
printf("%d %d\n",p->number,p->grade);
p=p->next;
}
}
return 0;
}