#include<stdio.h>
#include<malloc.h>
#define MaxSize 100
typedef char ElemType;
typedef struct{
ElemType elem[MaxSize];
int length;
}SqList;
//初始化
void InitList(SqList &L)
{
L.length=0;
}
//清空
void ClearList(SqList &L)
{
L.length=0;
}
//判断是否为空
bool ListEmpty(SqList L)
{
return (L.length==0);
}
//求长度
int ListLength(SqList L)
{
return L.length;
}
//输出线性表
void DispList(SqList L)
{
for(int i=0;i<L.length;i++)
printf("%c",L.elem[i]);
printf("\n");
}
//求数据元素值
bool GetElem(SqList L,int i,ElemType &e){
if(i<1||i>L.length)
return false;
e=L.elem[i-1];
return true;
}
//按值查找元素
int LocateElem(SqList L,ElemType e)
{
for(int i=0;i<=L.length;i++)
{
if(L.elem[i]==e)
return i+1;
}
return 0;
}
// 插入数据元素
bool ListInsert(SqList &L,int i,ElemType e)
{
if(L.length==MaxSize)
return false;
if(i<1||i>L.length+1)
return false;
i--;
for(int j=L.length;j>=i;j--)
L.elem[j]=L.elem[j-1];
L.elem[i]=e;
L.length++;
return true;
}
//整体创建
void Createlist(SqList &L,ElemType a[],int n)
{
int i;
for(i=0;i<n;i++)
L.elem[i]=a[i];
L.length=n;
}
//删除线性表
bool ListDelete(SqList &L,int i)
{
if(i<1||i>L.length)
return false;
for(int j=i;j<L.length;j++)
L.elem[j-1]=L.elem[j];
L.length--;
return true;
}
//并集
void Merge(SqList &LA,SqList &LB){
ElemType x;
int i,k;
for(i=0;i<LB.length;i++)
{
x=LB.elem[i];
k=LocateElem(LA,x);
if(k==0)
{
ListInsert(LA,LA.length,x);
LA.length++;
}
}
}