|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
//线性表:由零个或多个数据元素组成的有限序列
//线性表的顺序存储元素,用一段地址连续的存储单元依次存储线性表的数据元素
//存取、查找操作所需要的时间为O(1),插入、删除所需要的时间为O(n)
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType *data;
int length; //线性表的当前长度
int ListSize;
}SqList;
void InitList(SqList *L)
{
L->data=(ElemType *)malloc(MAXSIZE*sizeof(ElemType));
if(!L->data)
exit(0);
L->length=0;
L->ListSize=MAXSIZE;
}
void DestoryList(SqList *L)
{
free(L->data);
L->data=NULL;
L->length=0;
L->ListSize=0;
}
void ClearList(SqList *L)
{
L->length=0;
}
bool ListEmpty(SqList *L)
{
if(L->length==0)
return true;
else
return false;
}
ElemType GetElem(SqList L,int i)
{
if(L.length==0||i<1||i>L.length)
{
return -1;
}
return L.data[i-1];
}
void InsertList(SqList L,int i,ElemType e)
{
if(L.length>=MAXSIZE)
return;
if(i<1||i>L.length+1)
return;
for(int k=L.length;k>=i;k--)
{
L.data[k]=L.data[k-1];
}
L.data[i-1]=e;
L.length++;
}
void DeleteList(SqList L,int i,ElemType *e)
{
if(L.length==0)
return;
if(i<1||i>L.length)
return;
*e=L.data[i-1];
if(i<L.length)
{
for(int k=i;k<L.length;k++)
L.data[k-1]=L.data[k];
}
L.length--;
}
int ListLength(SqList L)
{
return L.length;
}
int LocateElem(SqList L,ElemType e)
{
int i;
for(i=0;i<L.length;i++)
if(L.data[i]==e)
return i;
return 0;
}
void UnionL(SqList La,SqList Lb)
{
ElemType e;
int La_len,Lb_len;
La_len=ListLength(La);
Lb_len=ListLength(Lb);
cout<<La_len<<" "<<Lb_len<<endl;
for(int i=1;i<=Lb_len;i++)
{
e=GetElem(Lb,i);
cout<<LocateElem(La,e)<<" "<<endl;
if(LocateElem(La,e)==0)
{
InsertList(La,++La_len,e);
}
}
cout<<La_len<<endl;
for(i=1;i<=La.length;i++)
printf("%d ",La.data[i-1]);
}
int main()
{
SqList La,Lb;
InitList(&La);
InitList(&Lb);
int i;
printf("请给顺序线性表La中输入数据,以空格隔开:\n");
for(i=1;i<=5;i++)
{
cin>>La.data[i-1];
La.length++;
}
printf("请给顺序线性表Lb中输入数据,以空格隔开:\n");
for(i=1;i<=5;i++)
{
cin>>Lb.data[i-1];
Lb.length++;
}
UnionL(La,Lb);
return 0;
} |
|