用c++设在一个带头结点的单链表中所有元素节点的数据值按递增顺序排列,设计一个算法:删除表中所有大于min且小于max的元素 (若存在)。
时间: 2023-05-11 08:04:59 浏览: 103
数据结构与算法c++实现 删除顺序表中大于x的元素
5星 · 资源好评率100%
可以使用两个指针,一个指向当前节点,一个指向前一个节点,遍历整个链表,如果当前节点的值大于min且小于max,则删除当前节点,即将前一个节点的next指向当前节点的next。具体实现如下:
void deleteRange(Node* head, int min, int max) {
Node* prev = head;
Node* curr = head->next;
while (curr != NULL) {
if (curr->data > min && curr->data < max) {
prev->next = curr->next;
free(curr);
curr = prev->next;
} else {
prev = curr;
curr = curr->next;
}
}
}
其中,head是头结点,head->next指向第一个元素节点。注意,要在删除节点之前先保存下一个节点的指针,否则会导致链表断裂。
阅读全文