要求:设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同 )。
[题目分析]
分别查找第一个值>mink的结点和第一个值 ≥maxk的结点,再修改指针,删除值大于mink且小于maxk的所有元素。
算法描述:
void delete(LinkList &L, int mink, int maxk) {
p = L->next;
while (p && p->data <= mink)
{//查找第一个值>mink的结点
pre = p;
p = p->next;
}
if (p)
{
while (p && p->data < maxk)
{ // 查找第一个值 ≥maxk的结点
p = p->next;
}
q = pre->next;
pre->next = p; // 修改指针
while (q != p)
{// 释放结点空间
s = q->next;
delete q;
q = s;
}
}
}