1870 Problem B C语言-链表排序

问题 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 
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->numbernumber)
                {
                    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;
}

你可能感兴趣的:(经验总结)