在无头结点的动态单链表上实现线性表操作Delete(L,i)
单链表类型定义如下:
typedef struct LNode{
ElemType data;
struct LNode *next;
} LNode, *LinkList;
实现函数如下:
void Delete(LinkList &L, int i)
{
LinkList p,s,q;
int j = 0;
p = (LinkList)malloc(sizeof(LNode));
p -> next = L;
q = p;
while(j < i-1 && q -> next){ //寻找第i个节点,并令q指向其前驱
q = q -> next;
++j;
}
if(!(p -> next) || j > i -1) ;//删除位置不合理,不执行删除操作
else{ //删除位置合理,执行删除操作并释放节点
s = q -> next;
q -> next = s -> next;
free