小言_互联网的博客

顺序表的简单合并

306人阅读  评论(0)
//顺序标的合并

#include<stdio.h>
#include<stdlib.h>

#define max 100

typedef struct slist
{
	int num[max];
	
	int length;
}list;

void printlist(list *l);//顺序标的打印

void initiallist(list *l);//初始化顺序表 

list* creatlist();//顺序标的创建

void mergelist(list *l1,list *l2,list *l3);//顺序标的合并 

void insertelement(list *l,int i,int x);//插入元素 

int serachelement(list *l,int x);//按照元素值查找元素 

int main(void)
{
	list *l1 = creatlist();
	
	list *l2 = creatlist();
	
	list l3;
	
	printf("打印顺序表1:\n");
	
	printlist(l1);
	
	printf("打印顺序表2:\n");
	
	printlist(l2);
	
	mergelist(l1,l2,&l3);
	
	printf("合并的顺序表如下:\n");
	
	printlist(&l3);
	return 0;
}

list* creatlist()
{
	list *l;
	
	l = (list *)malloc(sizeof(list));
	
	printf("请输入顺序表的长度:\n");
	
	scanf("%d",&l->length );
	
	int i;
	
	printf("请为顺序表添加元素:\n");
	
	for(i = 0; i < l->length ; i++)
	{
		scanf("%d",&l->num [i]);
	}
	
	return l;
 } 
 
 void printlist(list *l)
 {
	if(l->length == 0)
	{
		printf("顺序表的长度为零:\n");
	}
	
	else
	{
		int i;
		
		for(i = 0; i < l->length ; i++)
		{
			printf("%d ",l->num [i]);
		}
	}
	
	printf("\n");
 }
 
 void insertelement(list *l,int i,int x)
 {
 	if(l->length == max)
 	{
 		printf("顺序表已满:\n");
	}
	
	else if(i < 1 || i > l->length + 1)
	{
		printf("无法插入元素:\n");
	}
	
	else
	{
		int j;
		
		for(j = l->length - 1; j >= i - 1; j--)
		{
			l->num [j + 1] = l->num [j];
		}
		
		l->num [i - 1] = x;
		
		l->length ++;
	}
 }
 
 int serachelement(list *l,int x)
 {
 	int i;
 	
 	for(i = 0; i < l->length ; i++)
 	{
 		if(x == l->num [i])
 		{
 			return 1;
		}
	}
	
	return 0;
}

void initiallist(list *l)
{
	l->length = 0;
}
 
 void mergelist(list *l1,list *l2,list *l3)
 {
 	int i;
 	
 	initiallist(l3);
 	
 	for(i = 0; i < l1->length ; i++)
 	{
 		insertelement(l3,l3->length + 1,l1->num [i]);//将顺序表一中的元素全部插入l3中 注意位置序号 不能l3->length 
	}
	
	for(i = 0; i < l2->length ; i++)
	{
		if(serachelement(l1,l2->num [i]) == 0)//不重复原则 
		{
			insertelement(l3,l3->length + 1, l2->num [i]);
		}	
	} 
 }

转载:https://blog.csdn.net/qq_44653420/article/details/100994653
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场