设计算法,删除单链表中data值大于等于min,小于等于max的结点,min和max是给定的两个参数。
时间: 2024-05-31 13:08:01 浏览: 24
算法如下:
1. 先判断链表是否为空,如果为空则直接返回空链表。
2. 如果链表不为空,设置一个指针p指向链表的头结点。
3. 如果头结点的data值大于等于min并且小于等于max,则将头结点删除,并将p指向下一个结点。
4. 如果头结点的data值小于min,则将p指向下一个结点。
5. 如果头结点的data值大于max,则说明链表中没有符合条件的结点,直接返回原链表。
6. 对于链表中的其他结点,判断其data值是否符合条件,如果符合则删除该结点,否则将p指向下一个结点。
7. 返回删除符合条件的结点后的链表。
代码实现如下(使用C++语言):
ListNode* deleteNodes(ListNode* head, int min, int max) {
if(head == nullptr) return nullptr; // 链表为空
ListNode* p = head;
while(p != nullptr && p->val >= min && p->val <= max) { // 头结点符合条件
p = p->next;
delete head;
head = p;
}
if(head == nullptr) return nullptr; // 链表为空
ListNode* prev = head;
p = head->next;
while(p != nullptr) {
if(p->val >= min && p->val <= max) { // 当前结点符合条件
prev->next = p->next;
delete p;
p = prev->next;
} else {
prev = p;
p = p->next;
}
}
return head;
}
其中ListNode为单链表的结点类型,val为结点存储的值,next为指向下一个结点的指针。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)