一.线性表的基本操作
1.List MakeEmpty():初始化一个空线性表L;
2.ElementType FindKth(int K,List L):根据位序K,返回相应函数;
3.int Find(ElementType X,List L):在线性表L中查找X的第一次出现位置;
4.void insert(ElementType X,int i,List L):在位序i前插入一个 新元素X;
5.void Delete(int i,List L):删除指定位序i的元素;
6.int Length(List L):返回线性表L的长度n.
二.基本操作的实现
1.初始化(建立空的顺序表)
List MakeEmpty()
{ List Ptry;
Ptry = (List)malloc(sizeof(struct LNode));
Ptrl->List = -1;
return Ptrl;
}
2.查找
int Find(ElementType X,List Ptrl)
{ int i = 0;
while(i<=Ptrl->&&Ptrl->Data[i]!=X)
i++;
if(i>Ptrl->Last)
return -1;/*如果没有找到,返回-1*/
else return 1;/*找到后返回的是储存位置*/
3.插入操作实现
void Insert(ElementType X,int i,List Ptrl)
{ int j;
if(Ptrl->Last == MAXSIZE-1){/*表空间已满,不能插入*/
printf("表满");
return;
}
if(i<1||i>Ptrl->Last+2){/*检查插入位置的合法性*/
printf("位置不合法");
return;
}
for(j=Ptrl->List;j>=i-1;j--)
Ptrl->Data[j+1] = Ptrl->Data[j];/*将ai~an倒序向后移动*/
Ptrl->Data[i-1] = X;/*新元素插入*/
Ptrl->Last++;/*Last仍指向最向后元素*/
return;
4.删除操作实现
void Delete(int i,List Ptrl)
{ int j;
if(i<1||i>Ptrl->Last+1){/*检查空表及删除位置的合法性*/
printf("不存在第%d个元素",i);
return;
}
for(j = i;j<=Ptrl->Last;j++)
Ptrl->Data[j-1] = Ptrl->Data[j];/*将ai+1~an顺序向前移动*/
Ptrl->Last--;/*Last仍指向最后元素*/
return;