编写一个C++程序,在整型单链表L中,删除最小值
时间: 2024-10-09 15:09:57 浏览: 15
在C++中,可以编写一个递归函数来删除整型单链表L中的最小值。因为链表中的第一个元素是最小的,所以我们可以从头开始遍历链表,找到最小值,并将其前一个节点的`next`指针指向该节点的下一个节点,从而达到删除目的。这里是一个简单的示例:
```cpp
#include <iostream>
#include <climits>
// 定义链表节点结构
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 删除最小值的辅助函数
ListNode* deleteMin(ListNode* head) {
// 如果链表为空,直接返回nullptr
if (head == nullptr || head->next == nullptr) {
return nullptr;
}
// 检查列表是否有两个最小值
if (head->next->val == head->val) {
// 如果有,返回第二个最小值,即原头节点
return head->next;
}
// 如果只有一个元素或者第一个元素是最小的,直接返回下一个节点
if (head->val <= head->next->val) {
head->next = head->next->next;
return head;
}
// 递归删除最小值,将指针移动到下一个节点
head->next = deleteMin(head->next);
return head;
}
int main() {
ListNode* list = ...; // 你的链表实例
ListNode* newHead = deleteMin(list);
// 输出处理后的链表
while (newHead != nullptr) {
std::cout << newHead->val << " ";
newHead = newHead->next;
}
std::cout << std::endl;
return 0;
}