D - 来和狗狗比链表吧~亲~

D - 来和狗狗比链表吧~亲~
Time Limit:1000MS    Memory Limit:131072KB    64bit IO Format:%lld & %llu

Description

实验室有犬初长成,名曰dogdog,静若处子,动若脱兔,回眸一笑百媚生,工大粉黛无颜色。日前,沉溺于LinkList,无法自拔。 某日,某丹发现某狗在写链表的非降序合并...所以来和狗狗比赛下谁的链表更厉害吧!~ Just ac it!

Input

输入一个数字n,接下来是n组数据,对于每组数据输入一个a、一个b,然后是2条非降序链表。(a表示第一条链表的长度,b表示第二条链表的长度...)

Output

这两条链表合并后的一条非降序链表,并在每组数据之间有行空行。

Sample Input

25 41 2 3 4 56 7 8 95 51 3 5 7 92 4 6 8 10

Sample Output

1 2 3 4 5 6 7 8 91 2 3 4 5 6 7 8 9 10

Hint

赢了就让狗当你基友哦~~ >.<

// File Name: 来和狗狗比链表.cpp
// Author: rudolf
// Created Time: 2013年03月12日 星期二 19时17分54秒

#include<vector>
#include<list>
#include<map>
#include<set>
#include<deque>
#include<stack>
#include<bitset>
#include<algorithm>
#include<functional>
#include<numeric>
#include<utility>
#include<sstream>
#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<ctime>

using namespace std;
int n,m;
typedef struct slonode
{
	int data;
	struct slonode *next;
}slonode,*linklist;
///////////
linklist bing(linklist a,linklist b)
{
//	linklist p,q,s,lc,head;
//	p=la;
//	q=lb;
	linklist head,p,s;
	head=(linklist)malloc(sizeof(slonode));
	p=head;
//	lc->next=NULL;
//	s=(linklist)malloc(sizeof(slonode));
	while(a||b)
	{
		if((!a)||(b&&(a->data<b->data)))
		{
			p->next=b;
			b=b->next;
		}
		else
		{
			p->next=a;
			a=a->next;
		}
		p=p->next;
	}
	p->next=NULL;
	return head;
	//<F6>return lc;
}
//////////////////
void print(linklist head,int flag)
{
/*	if(head==NULL)
		return;
	else
	{
		if(flag)
			putchar(' ');
		printf("%d",head->data);
		print(head->next,flag+1);
	//	cout<<endl;
	free(head);
	}*/
	linklist p,q;
	p=head;
	cout<<p->data;
	while(p->next!=NULL)
	{
		q=p->next;
		cout<<q->data;
		p->next=q->next;
		//p=p->next;
		free(q);
	}
}
/////////////////
linklist sort(linklist a,int n)
{
	linklist p,q;
	for(int i=0;i<n;i++)
//	for(q=a->next;q->next!=NULL;q=q->next)
		for(p=a->next;p->next!=NULL;p=p->next)
		{
		//	if(q->data<q->next->data)
		//	{
		//		int temp=p->data;
		//		p->data=p->next->data;
		//		p->next->data=temp;
		//	}
			if(p->data<p->next->data)
			{
				int temp=p->data;
				p->data=p->next->data;
				p->next->data = temp;
			}
		}
	return a;
}

///////////////////////OK
linklist creatlist(int n)
{
	linklist p,q,s,head;
	head=(linklist)malloc(sizeof(slonode));
	q=head;
	q->next=NULL;
	for(int i=1;i<=n;i++)
	{
		s=(linklist)malloc(sizeof(slonode));
		int num;
		scanf("%d",&num);
		s->data=num;
		s->next=q->next;
		q->next=s;
		//q->next=NULL;
	}
	return head;
}
///////////////
int main()
{
	linklist head,la,lb,lc;
	head=(linklist)malloc(sizeof(slonode));
	int t;
//	while(~scanf("%d",&t))
	{
		scanf("%d%d",&n,&m);
		la=creatlist(n);//返回头;
		lb=creatlist(m);
		sort(la,n);
	//	printf ("jjjjjjjjjjjjjjjjj\n");
	//	print(la,0);
		sort(lb,m);
//		print(lb,0);
		lc=bing(la->next,lb->next);
	//	print(lc,0);
	//printf("dddddddddddddddddd\n");
		sort(lc,m+n);
		printf("ffffffffffffffff\n");
		print(lc->next,0);
		free(la);
		free(lb);
		free(lc);
	}
return 0;
}

posted @ 2013-04-12 17:17  bo_jwolf  阅读(145)  评论(0)    收藏  举报