码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构实验(保存起来过两天写实验报告) 链表的合并

时间:2014-11-15 12:53:27      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   sp   for   数据   on   2014   log   

huangjing

链表的合并,要求O(la*lb)的复杂度,实际上就是插入什么的,注意如果在链表开头和结尾的特殊情况

代码

#include<cstdio>
#include<cstring>
#include<cstdlib>

typedef struct node
{
	int data;
	struct node *next;
}Node,*listnode;

int lena,lenb;

void creatlist(listnode &head,int flag)
{
	int x=1;
	listnode p,xx;
    head->next=NULL;
	xx=head;
	while(x!=0)
	{
		p=(listnode)malloc(sizeof(struct node));
        scanf("%d",&x);
		if(x==0)  break;
		if(flag)
			lena++;
		else
			lenb++;
		p->data=x;
		p->next=NULL;
		xx->next=p;
		xx=p;
	}
}//创建链表

void forlist(listnode &head)
{
    listnode p;
	p=head->next;
	while(p!=NULL)
	{
        printf("%d ",p->data);
		p=p->next;
	}
}//遍历链表

void Insert(listnode &la,int val)
{
	listnode p,last,cur;
	p=la->next;
	last=p;
	cur=(listnode)malloc(sizeof(node));
    cur->data=val;
    if(p->data>val)
    {
       cur->next=p;
       la->next=cur;
       return;
    }
	while(p->data<val)
	{
		last=p;
		p=p->next;
		if(p==NULL)  break;
	}
    cur->next=p;
    last->next=cur;
}

void unionlist(listnode &la,listnode &lb)
{
	int flag;
	listnode xx,yy;
	yy=lb->next;
    for(int i=1;i<=lenb;i++)
	{
		flag=0;
        int key=yy->data;
		yy=yy->next;
		xx=la->next;
		for(int j=1;j<=lena;j++)
		{
			if(xx->data==key)
			 {
				 flag=1;
				 break;
			 }
			 else
				 xx=xx->next;
		}
		if(!flag)
		{
			Insert(la,key);
			lena++;
		}
	}
}//合并链表

int main()
{
	lena=lenb=0;
    listnode heada,headb;
	heada=(listnode)malloc(sizeof(struct node));
    headb=(listnode)malloc(sizeof(struct node));
	creatlist(heada,1);
	creatlist(headb,0);
	printf("链表la长度 lb长度:%d %d\n",lena,lenb);
	printf("链表ha为");
	forlist(heada);
	printf("\n");
	printf("链表hb为");
	forlist(headb);
	printf("\n");
    unionlist(heada,headb);
	printf("合并后的链表:\n");
    forlist(heada);
    printf("\n");
	forlist(headb);
	return 0;
}


/*
3 4 6 18  0
2 3 5 6 7 19 20 0
*/


数据结构实验(保存起来过两天写实验报告) 链表的合并

标签:style   blog   io   sp   for   数据   on   2014   log   

原文地址:http://blog.csdn.net/u014303647/article/details/41144591

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!