设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同 )。并且生成代码
时间: 2024-05-01 19:16:22 浏览: 46
设计算法实现删除顺序表中多余重复元素.txt
算法步骤如下:
1. 定义一个虚拟头节点dummy,指向链表的头节点head。
2. 定义两个指针pre和cur,初始时pre指向dummy,cur指向head。
3. 遍历链表,如果cur节点的值大于等于mink并且小于等于maxk,则删除cur节点,否则pre指向cur,cur指向下一个节点。
4. 返回dummy的下一个节点作为新链表的头节点。
代码实现如下:
```
ListNode* deleteRange(ListNode* head, int mink, int maxk) {
ListNode* dummy = new ListNode(0);
dummy->next = head;
ListNode* pre = dummy;
ListNode* cur = head;
while (cur != nullptr) {
if (cur->val >= mink && cur->val <= maxk) {
pre->next = cur->next;
delete cur;
cur = pre->next;
} else {
pre = cur;
cur = cur->next;
}
}
return dummy->next;
}
```
阅读全文