在下标为i的位置插入元素e:
bool ListInsert(SqList &L, int i, ElemType e){if(iL.length||L.length==MaxSize)//i取0到lengthreturn false;for(int j=L.length-1; j>=i; --j)L.data[j+1]=L.data[j];//从后往前,逐个将元素后移一个位置L.data[i]=e;++(L.length);return true;} abcdef0123456 顺序表删除删除下标为i的元素,并返回元素值e:
bool ListDelete(SqList &L, int i, ElemType &e){if(iL.length-1)return false;e=L.data[i];for(int j=i; jnext=s;//r所在的next指向新建的s结点r=r->next;}r->next=NULL;} 合并链表A,B是两个带头结点的单链表,其中元素递增有序,设计一个算法,将A,B归并成一个按元素值非递减有序的链表C,C由A和B中的结点组成。
void Merge(LNode *A, LNode *B, LNode *&C){LNode *p=A->next;LNode *q=B->next;LNode *r;//r始终指向C的终端结点C=A;C->next=NULL;free(B);r=C;while(p!=NULL && q!=NULL){if(p->datadata){r->next=p;p=p->next;r=r->next;}else{r->next=q;q=q->next;r=r->next;}}r->next=NULL;if(p!=NULL)//将剩余结点