当前位置: 首页 > 工具软件 > Mink > 使用案例 >

设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同 )。

张丰
2023-12-01

题目:设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同 )。

思路:题目所说链表是递增的,所以符合删除条件的结点必定连在一起,所以我们可以先找到待删除区间,之后把前后两部分接起来就好了。

代码如下:

```c
void deletenode(Linklist& L, int mink, int maxk)
{
	Linklist q, p = L->next;
	Linklist pre= (LNode*)malloc(sizeof(LNode));
	while (p && p->elem <= mink)//跳过小于mink的结点
	{
		pre = p;
		p = p->next;
	}
	//这里之后的结点值都是大于mink的了
	if (p) {
		while (p && p->elem < maxk)//删除小于maxk的结点
		{
			q = p;
			p = p->next;
			delete q;
			
		}
		
	}
	pre->next = p;//把前部分和后部分相接
}
 类似资料: