void Delete_Some_Num(LinkList &s, int min, int max)
{
LNode *p, *q, *p_front, *temp;
//p_front用于记录p前面的节点位置
p = s -> next;
p_front = s;
while(p && p -> data <= min)//p最终指向第一个大于min的结点
{
p_front = p_front -> next;
p = p -> next;
}
if(!p)//没有结点的元素值在所给区间上,故不做删除操作
{
return;
}
else
{
q = p;
while(q && q -> data < max)//q最终指向第一个大于max的结点
{
q = q -> next;
}
}
//删除满足删除条件的结点
p_front -> next = q;
while(p != q)
{
temp = p;
p = p -> next;
delete temp;
temp = NULL;
}
return;
}
考点:
1.定位边界结点
2.链表的删除操作
注意:
1.边界测试:只有一个结点时
2.测试链表的情况分三大类:链表与删除区间无交集,链表与删除区间有交集,待删除区间是链表的子集