顺序结构体
#define MaxSize 50
typedef int ElemType;
数组静态分配
typedef struct SqList
{
ElemType data[MaxSize];
int length;
}SqList;
数组动态分配
typedef struct Sqlist
{
ElemType *data;
int length;
}Sqlist;
声明一个顺序表变量
SqList L;
创建一个空的线性表
InitList(&L)
{
L.data=(ElmeType*)malloc(MaxSize*sizeof(ElemType));
if(L.data)
L.length=0;
return true;
else
return error;
}
求表长
Length(L)
{
return L.length;
}
按值查找
LocateElem(L,e)
{
for(int i=0;i<L.length;i++)
{
if(L.data[i]==e)
return i+1;
}
}
按位查找
GetElem(L,i)
{
return L.data[i-1];
}
插入
ListInsert (&L,i,e)
{
if(i<L.length+1||i<0)
return false;
if(L.length==MaxSize)
return false;
L.length++;
for(int j=L.length;j>i-1;j--)
{
L.data[j]=L.data[j-1];
}
L.data[i-1]=e;
}
删除
ListDelete(&L,i,&e)
{
if(i<0||i>L.length)
return false;
e=L.data[i-1];
for(int j=i;j<L.length;j++)
{
L.data[j-1]=L.data[j];
}
L.length--;
}
按值删除
ListDelete(&L,e)
{
while(i<L.Length)
{
if(L.data[i]==e)
{
for(int j=i+1;j<L.Length;j++)
L.data[j-1]=L.data[j];
}
else
i++;
}
if(i>=L.length)
return false;
return true;
}
输出
PrintList(L)
{
for(int i=0;i<L.length;i++)
{
printf("%d\t",L.data[i]);
}
}
判空
Empty(L)
{
if(L.length==0)
return true;
}
销毁
DestroyList(&L)
{
delete L;
}
清空
ClearList(&L)
{
L.length=0;
}
有序表的合并
MergeList(A,B,&C)
{
C.length=A.length+B.lenth;
C.data=new ElemType[C.length];
int i=0,j=0,k=0;
while(i<A.length&&j<B.length)
{
if(A.data[i]>B.data[j])
{
C.data[k++]=B.data[j++];
}
else
{
C.data[k++]=A.data[i++];
}
}
while(i<A.length) C.data[k++]=A.data[i++];
while(j<B.length) C.data[k++]=B.data[j++];
}