设在一个带头结点的单链表中所有元素结点的数值域无序,编写一个函数,删除表中所有介于给定的两个值(作为函数参数给出)之间的元素的元素(若存在)
分析:因为链表是无序的,所以只能逐个结点进行检查,执行删除
代码如下:
void Delete_Range(LinkedList& L, int min, int max)
{
LNode* p = L->next; //p为遍历指针
LNode* pre = L; //pre为比遍历指针的前驱指针
while(p) {
if(p->data > min && p->data < max) { //找到待删除结点
pre->next = p->next;
free(p);
p = pre->next;
} else { //否则继续找被删除结点
pre = p; //pre指针向后移
p = p->next; //p指针向后移
}
}
}
标签:pre,结点,单链,元素,next,表中,指针
From: https://www.cnblogs.com/xiaomitu/p/17445422.html