线性表获取
Status GetElem (SqList L,int i, ElemType *e){
if(l.length === 0 || i<0 || i>L.length)
return ERROR;
*e = L.data[i-1];
return OK;
}
线性表插入
Status ListInsert(SqList *L,int i, ElemType e){
int k;
if(L->length == MaxSize){
return ERROE;
}
if(i<1 || i>L->length+1)
return ERROR;
if(i<L->length){
for(k=L->length-1;k>i-1;k--)
L->data[k+1] = L->data[k]
}
L->data[i-1] = e;
L->length++;
return OK;
}
// 线性表删除
Status ListInsert(SqList *L,int i, ElemType *e){
int k;
if(L->length == 0){
return ERROE;
}
if(i<1 || i>L->length)
return ERROR;
*e = L->data[i-1];
if(ilength){
for(k=i;k
L->data[k-1] = L->data[k]
}
L->length--;
return OK;
}
//链表的获取
Status GetElem(LinkList L;int i;ElemType *e){
int j;
LinkList p;
p = L->next;
j=1;
while(p && j
p = p->next;
++j;
}
if(!p || j>i){
return ERROR;
}
*e = p->data;
return OK;
}
//链表插入
Status ListInsert(LinkList *L,int i,ElemType e){
int j;
LinkList p,s;
p = *L;
j = 1;
while(p && j
p = p->next;
++j;
}
if(!p || j>i)
return ERROE;
s = (LinkList)malloc(sizeof(Node));
s->data = e;
s->next = p->next;
p->next = s;
return ok;
}
//删除
Status ListDelete(LinkList *L,int i,ElemType *e){
int j;
LinkList p,s;
p = *L;
j = 1;
while(p->next && j
p = p->next;
++j;
}
if(!(p->next) || j>i)
return ERROE;
s = p->next;
p->next = s->next;
*e = s->data;
free(s);
}
// 单链表整体删除‘
Status ListClear(LinkList *L){
LinkList p,q;
p = (*L)->next;
while(p){
q = p->next;
free(p);
p = q;
}
(*L)-next = NUll;
}
网友评论