2732 - 合并单链表

创建两个有序单链表,然后,把这两个有序单链表合并成一个有序单链表。

题目输入

第一行:输入第一个有序单链表。

第二行:输入第二个有序单链表。

题目输出

第一行:输出合并之后的单链表

输入/输出样例

题目输入

1 2 4 5 6
3 7 8 9

题目输出

1 2 3 4 5 6 7 8 9

C语言解答

#include <stdio.h>
#define MAX 100
#define M 5
#define N 4
typedef int elemtype;
typedef struct seqlist
{
	elemtype A[MAX],B[MAX];
	int last1,last2;
}Seqlist;

int main()
{
	struct seqlist l;
	int i,j,k;
	l.last1=M;
	l.last2=N;
	for(i=0;i<l.last1;i++)
		scanf("%d",&l.A[i]);
	for(i=0;i<l.last2;i++)
		scanf("%d",&l.B[i]);
	i=0;
	j=0;
	while(i<l.last1&&j<l.last2)
	{
		if(l.A[i]<l.B[j])
		{
			printf("%d",l.A[i]);
			i++;
		}
		else
		{
			printf("%d",l.B[j]);
			j++;
		}
		if(i<l.last1&&j<l.last2)
			printf(" ");
	}
	if(i==l.last1)
		for(k=j;k<l.last2;k++)
			printf(" %d",l.B[k]);
	else
		for(k=i;k<l.last1;k++)
			printf(" %d",l.A[k]);
	printf("\n");
}

C++解答

#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct Node 
{
	ElemType data;
	struct Node * next;
	
}Node,*LinkList;
void CreateFromTaila(LinkList L)
{
	int i;
	Node * s,* r;
	r=L;
	for(i=0;i<5;i++)
	{
	s=(Node *)malloc(sizeof(Node));
	scanf("%d",&s->data);
	s->next=r->next;
	r->next=s;
	r=s;
	}
}   
void CreateFromTailb(LinkList L)
{
	int i;
	Node * s,* r;
	r=L;
	for(i=0;i<4;i++)
	{
	s=(Node *)malloc(sizeof(Node));
	scanf("%d",&s->data);
	s->next=r->next;
	r->next=s;
	r=s;
	}
}   
LinkList MergeLinkList(LinkList La,LinkList Lb)
{
	Node *pa,*pb,*r;
	LinkList Lc;
	pa=La->next;
	pb=Lb->next;
	Lc=La;
	Lc->next=NULL;
	r=Lc;
	while(pa!=NULL&&pb!=NULL)
	{
		if(pa->data<=pb->data)
		{
		r->next=pa;
		r=pa;
		pa=pa->next;
		}
		else
		{
			r->next=pb;
			r=pb;
			pb=pb->next;
		}
		if(pa!=NULL)
		r->next=pa;
		else
		r->next=pb;
	}
	free(Lb);
}
void display(LinkList L)
{
	Node *c;
	c=L->next;	
	while(c!=NULL)
	{
	printf("%d",c->data);
		printf(" ");
		c=c->next;
	}	
	printf("\n");
}
int main()
{
	LinkList La,Lb;
	La=(Node *)malloc(sizeof(Node));
	La->next=NULL;
	Lb=(Node *)malloc(sizeof(Node));
	Lb->next=NULL;
	CreateFromTaila(La);
	CreateFromTailb(Lb);
	MergeLinkList( La, Lb);
	display(La);
}



时间限制 10 秒
内存限制 128 MB
讨论 统计
上一题 下一题