注意细节
//创建并返回一个空的线性表;
List MakeEmpty(){
List t = (List)malloc(sizeof(struct LNode));
t->Last = -1;
return t;
}
//返回线性表中X的位置。若找不到则返回ERROR;
Position Find( List L, ElementType X ){
int i = 0;
for(;i<=L->Last;i++){
if(L->Data[i]==X)
return i;
}
return ERROR;
}
/**将X插入在位置P并返回true。
若空间已满,则打印“FULL”并返回false;
如果参数P指向非法位置,则打印“ILLEGAL POSITION”并返回false;**/
bool Insert( List L, ElementType X, Position P ){
if(L->Last>=MAXSIZE-1){
printf("FULL");
return false;
}
if(P<0||P>L->Last+1){
printf("ILLEGAL POSITION");
return false;
}
//将前p~Last这些元素往后移动1位
int i = L->Last;
for( ;i>=P ; i--){
L->Data[i+1] = L->Data[i];
}
//插入p位置
L->Data[P] = X;
L->Last++;
return true;
}
/**将位置P的元素删除并返回true。
若参数P指向非法位置,则打印“POSITION P EMPTY”
(其中P是参数值)并返回false***/
bool Delete(List L, Position P){
if(P<0||P>L->Last){
printf("POSITION %d EMPTY",P);
return false;
}
/**
将p~last元素往前移动1位覆盖即可
**/
int i = P;
for( ; i<L->Last ; i++)
L->Data[i] = L->Data[i+1];
L->Last--;
return true;
}