Zaozhuang University Onlinejudge
问题 1199 --两个链表的归并
1199: 两个链表的归并
时间限制: 1 Sec 内存限制: 128 MB
提交: 9 解决: 8
[提交][状态][讨论版][命题人:uzzoj]
题目描述
线性表 A、B,分别由单链表 LA , LB
存储,其中数据元素按值非递减有序排列, 将 A ,B 归并为一个新的线性表C , C 的数据元素仍按值非递减排列 。设线性表 C 由单链表 LC 存储。
输入
输入两个线性表
输出
输出合并后的线性表
样例输入
3 5 8 11 2 6 8 9 11
样例输出
2 3 5 6 8 8 9 11 11
#include <stdio.h>
#include <stdlib.h>
struct LNode{
int data;
struct LNode *next;
};
struct LNode *creat(int n)
{
int i;
struct LNode *head,*p1,*p2;
int a;
head=NULL;
for(i=0;i<n;i++){
p1=(struct LNode *)malloc(sizeof(struct LNode));
scanf("%d",&a);
p1->data=a;
if(head==NULL)
{
head=p1;
p2=p1;
}
else{
p2->next=p1;
p2=p1;
}
p2->next=NULL;
}
return head;
}
struct LNode *creat1(int m)
{
int i;
struct LNode *head,*p1,*p2;
int a;
head=NULL;
for(i=0;i<m;i++){
p1=(struct LNode *)malloc(sizeof(struct LNode));
scanf("%d",&a);
p1->data=a;
if(head==NULL)
{
head=p1;
p2=p1;
}
else{
p2->next=p1;
p2=p1;
}
p2->next=NULL;
}
return head;
}
int main()
{
int i,n=4,m=5;
int a[100];
struct LNode *q,*p,*L;
q=creat(n);
p=creat1(m);
for(i=0;i<n;i++){
a[i]=q->data;
q=q->next;
}
for(i=n;i<n+m;i++){
a[i]=p->data;
p=p->next;
}
int j;
for(i=0;i<n+m-1;i++){
for(j=i+1;j<n+m;j++){
if(a[j]<a[i])
{
int temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
for(i=0;i<n+m;i++){
printf("%d ",a[i]);
}
}