合并线性表

一般线性表的合并

问题描述:假设利用两个线性表La和Lb分别表示两个集合A和B,现要求一个新的集合 A=A∪B。
La=(7, 5, 3, 11)
Lb=(2, 6, 3)
La=(7, 5, 3, 11, 2, 6)
算法步骤:
依次取出Lb中的每个元素,执行以下操作:
在La中查找该元素
如果找不到,则将其插入La的最后

合并线性表 代码如下 

#include<iostream>
using namespace std;
#define MAX 100
typedef struct
{
	int *elem;
	int length;
}SqList;
//初始化
int InitSqList(SqList &L)
{
   L.elem=new int[MAX];
   if(!L.elem)
   {
   	return 0;
   }
   else 
   {
   	L.length=0;
   	return 1;
   }
} 
int ListLength(SqList L)
{
	return L.length;
}
//遍历
void TraveList(SqList &L)
{
	for(int i=0;i<L.length;i++)
	{
		printf("%d ",L.elem[i]);
	}
	printf("\n");
} 
void CreateList(SqList &L)
{
	printf("请输入线性表的长度:");
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
  {
	int e;
	scanf("%d",&e);
	L.elem[i]=e;
	L.length=i+1; 
  }
}
void Combine(SqList &A,SqList &B)
{
	for(int i=0;i<B.length;i++){
		int count=0;
		for(int j=0;j<A.length;j++){
			if(A.elem[j]=B.elem[i]){
				count++;
			}
		}
	if(count==0)
	{
		A.elem[A.length++]=B.elem[i];
	}
	}
}
int main() 
{
	SqList A, B;
 
	if (InitSqList(A)) 
	{
		printf("线性表A初始化成功!\n");
	}
	else 
	{
		printf("线性表A初始化失败!\n");
	}
 
	if (InitSqList(B)) 
	{
		printf("线性表B初始化成功!\n");
	}
	else 
	{
		printf("线性表B初始化失败!\n");
	}
 
	CreateList(A);
	printf("A表长度:%d\n", A.length);
	TraveList(A);
	CreateList(B);
	printf("B表长度:%d\n", B.length);
	TraveList(B);
 
	printf("合并后的线性表:\n");
	Combine(A, B);
	printf("合并后表长度:%d\n", A.length);
	TraveList(A);
 
	system("pause");
 
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值