有序集合是指集合中的元素有序排列。已知两个有序集合A和B,现要求一个新的有序集合C=A-B。
针对案例,要求:
(1)分析应采用何种数据结构;
(2)如何存储并画出存储示意图;
(3)设计算法实现所要求的功能;
(4)编写程序实现该算法。
(1)顺序表的初始化、查找
(3)创建A,B两个已知数据的有序顺序表,从A中的第一个数据开始循环查找B中的数据,如果B中不存在则将A中的这个数据存入C中。
(4)
#include<iostream>
using namespace std;
#define MAXSIZE 100
typedef int ElemType;
typedef struct {
ElemType *elem;
int length;
}SqList;
int InitList(SqList &Lc)
{
Lc.elem=new ElemType[MAXSIZE];
if(!Lc.elem)
return -1;
Lc.length=0;
return 0;
}
void set(SqList &La,SqList &Lb,SqList &Lc)
{
int i,j,k=0;
for (i=0;i<La.length;i++)
{
for(j=0;j<Lb.length;j++)
{
if (La.elem[i]==Lb.elem[j])
break;
}
if(j==Lb.length)
Lc.elem[k++]=La.elem[i];
}
for(i=0;i<k;i++)
cout<<Lc.elem[i]<<" ";
cout<<endl;
}
int main()
{
int i,j,a[5]={1,3,5,7,9},b[5]={1,2,3,4,5};
SqList La, Lb, Lc;
InitList(La);
InitList(Lb);
InitList(Lc);
La.length=5;
Lb.length=5;
for (i=0;i<5;i++)
La.elem[i]=a[i];
for (i=0;i<5;i++)
Lb.elem[i]=b[i];
set(La,Lb,Lc);
return 0;
}