删除第 i 个结点
假设 i=3 ,删除后效果如下:
删除第 i 个元素,要找到第 i-1 个元素,要修改其指针域。
算法步骤:
① 找到第 i-1 个元素的存储位置 p,保存要删除的 ai 的值
② 令p->next 指向ai+1,如图:p->next = p->next->next
③ 释放 结点ai 的空间:delete q;或者 free(q);
代码部分:
//将线性表L中第i个数据元素删除 //传入参数里的 “&” 符号,含义为引用变量 Status ListDelete_L(LinkList &L, int i){ if(i<1){ return ERROR; } p = L->next; j = 1; while(p!=NULL && j!=i-1){ p = p->next; j++; } if(p==NULL){ return ERROR; } q = p->next; p->next = p->next->next; delete q; return OK; }