线性表的插入:
Status ListInsert_Sq(SqList &L,int i,ElemType e)
{
//在顺序线性表L中第i个位置之前插入新的元素e,
// i的合法值为1<=i<=ListLength_Sq(L)+1
if(L.length>=L.listsize)
{
newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase) exit(OVERFLOW);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;
*q=e;
++L.length;
return ok;
}// ListInsert_sq
线性表的删除:
Status ListDelete_Sq(SqList &L,int i,ElemType &e)
{
//在顺序线性表L中删除第i个元素,并用e返回其值,
// i的合法值为1<=i<=ListLength_Sq(L)
if((i<1)||(i>L.length)) return ERROR;
p=&(L.elem[i-1]);
e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)*(p-1)=*p;
--L.length;
return ok;
}//ListDelete_sq
单链表的插入:
Status ListInsert_L(LinkList &L,int i,ElemType e)
{
//在带头结点的单链表L中第i个位置之前插入元素e
p=L;j=0;
while(p&&j<i-1)
{p=p->next;++j;}
if(!p||j>i-1)return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
return OK;
} //ListInsert_L
单链表的删除:
Status ListDelete_L(LinkList &L,int i,ElemType &e)
{
p=L;j=0;
while(p->next&&j<i-1){
p=p->next;++j;
}
if(!(p->next)||j>i-1) return ERROR;
q=p->next;p->next=q->next;
e=q->data;free(q);
return OK;
}//ListDelete_L