线性表求与运算

来源:互联网 发布:android程序员的简历 编辑:程序博客网 时间:2024/06/13 16:43

题目描述:

假设利用两个线性表LA和LB分别表示集合A和B(即线性表中的数据元素即为集合中的成员),现要求一个新的集合A=AUB


解题思路:

扩大线性表LA,将存在于线性表LB中而不存在线性表LA中的数据元素插入到线性表LA中去。只要从线性表LB中依次取得每个数据元素,并依值在线性表LA中访问,若不存在则插入之。


使用顺序表实现的代码如下:

#include<iostream>using namespace std;struct SqList{int *data;//存储空间基地址 int length;//当前长度 int listsize;//当前分配的存储容量 }; void Show(SqList *L){for(int i=0;i<L->length;i++)cout<<L->data[i]<<" ";cout<<endl;}bool Locate(SqList *L,int x){for(int i=0;i<L->length;i++){if(L->data[i]==x)return true;}return false;}void Insert(SqList *L,int x){int len = L->length;L->data[len] = x;if(L->length+1<=L->listsize)L->length++;} //核心函数 void Union(SqList *LA,SqList *LB){int lb_len = LB->length;for(int i=0;i<lb_len;i++){if(!Locate(LA,LB->data[i])){Insert(LA,LB->data[i]);}}}int main(){int a[20]={1,2,3,4,5,6,7,8,9,10};int b[7]={1,2,12,34,7,56,22};SqList LA,LB;LA.data = a;LA.length = 10;LA.listsize = 20;LB.data = b;LB.length = 7;LB.listsize = 7;cout<<"LA:";Show(&LA);cout<<"LB:";Show(&LB);Union(&LA,&LB);cout<<"Union:";Show(&LA);return 0;} 
核心代码为Union函数。

运行结果为:

LA:     1 2 3 4 5 6 7 8 9 10
LB:     1 2 12 34 7 56 22
Union:  1 2 3 4 5 6 7 8 9 10 12 34 56 22

1 0
原创粉丝点击