初始条件:1.带有头结点的链表 2。删除位置i
基本操作:p指向某一个结点,可以删除它后面的那个结点 执行的操作是p->next=p->next->next 要删除第i个结点 就要找到第i-1个结点
初始化:1.p=L 指向头结点 2.j=1
寻找第i-1个结点
while( j<i ){
p=p->next;
j++;
}
i的不同情况:1.i<1 此时p指向头结点 2. 1<=i<=length 正常执行 3.i=length+1 正常执行 p指向最后一个结点 3.i>length+1 会出现空指针异常
避免4出现的空指针异常 以及 3在后续操作会出现的空指针异常 加入条件 p->next 不为空
while( j<i && p->next){
p=p->next;
j++;
}
排除1,3,4:
if(j>i || p->next){
return ERROR;
}
删除结点:
p->next=p->next->next