删除单链表中所有介于给定的两个值之间的元素的元素

设在一个带头结点的单链表中所有元素结点的数值域无序,编写一个函数,删除表中所有介于给定的两个值(作为函数参数给出)之间的元素的元素(若存在)

分析:因为链表是无序的,所以只能逐个结点进行检查,执行删除

代码如下:

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指针向后移
		}
	}
}
posted @ 2023-05-31 10:48  LilyFlower  阅读(26)  评论(0编辑  收藏  举报