1、InitLISt(&L)
操作结果:构造一个空的线性表L
int initLISt(SqList *L)
{
L->length=0;
return 1;
}
2、printLIst(L)
操作结果:打印一个顺序表,方便测试操作是否正确
int printList(SqList L)
{
if(L.length==0)
{
printf("链表为空\n");
return 0;
}
int i;
for(i=0;i<L.length;i++)
{
pritnf("data[%d]=%d\n",i,L.data[i]);
}
printf("\n");
return 1;
}
3、getlength(L)
操作结果:获取顺序表的长度
int gelength(SqList L)
{
return L.length;
}
4、createList(&L,int length)
操作结果:创建一个顺序表,每个元素随机赋值
int createList(SqList *L,int length)
{
srand(time(0));
int i;
for(i=0;i<length;i++)
{
L->data[i]=rand()%100;
L->length++;
}
return 1;
}
5、insertList(&L,int pos,ElemType elem)
操作结果:在指定位置处插入一个新元素
intsertLIst(SqList *L,int pos,ElenType elem)
{
int i;
if(pos<1||pos>L->length)
{
printf("插入的位置有误,无法插入数据\n");
return 0;
}
for(i=L->length;i>pos-1;i--)
{
L->data[i+1]=L->data[i];
}
L->data[pos-1]=elem;
L->length++;
return 1;
}
6、locateElem(L,ElemType e)
操作结果:查找在线性表中是否有指定元素
int locateElem(L,ElemType e)
{
for(int i=0;i<L.length;i++)
{
if(L.data[i]==e)
{
printf("在pos[%d]位置处,查找到了元素%d",i+1,e);
return 1;
}
}
return 0;
}
例题:2-1假设利⽤两个线性表LA和LB分别表示两个集合A和B,现要求⼀个新的集合A=A U B。这就要求对线性表作如下操
作:扩⼤线性表LA,将存在于线性表LB中⽽不存在于线性表LA中的数据元素插⼊到LA中去。只要从线性表LB中依
次取得每个数据元素,并依值在线性表LA中进⾏查访,若不存在,则插⼊之。
void union(List &La,List Lb)
{
int La_len=Listlength(La);
int Lb_len=Listlength(Lb);
for(i=1;i<Lb_len;i++)
{
GetElem(Lb,i,e);
if(!LocateElem(La,e,equal))
ListInsert(La,++La_len;e);
}
}