用c++语言删除单链表L中最小结点
时间: 2024-11-27 11:09:02 浏览: 14
在C++中,删除单链表(Linked List)中的最小节点通常涉及到遍历链表以及保持对当前最小值的跟踪。以下是一个简单的步骤来实现这个功能:
```cpp
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
void removeMinNode(ListNode* &head) {
// 如果链表为空或只有一个元素
if (head == nullptr || head->next == nullptr) {
head = nullptr; // 或者返回一个新的ListNode
return;
}
// 初始化头节点为当前最小值
ListNode *minNode = head, *current = head;
while (current->next != nullptr) {
// 检查当前节点是否比minNode小
if (current->val < minNode->val) {
minNode = current; // 更新最小值节点
}
current = current->next; // 移动到下一个节点
}
// 删除最小值节点
if (minNode == head) { // 如果最小值在头部
head = head->next;
} else {
minNode->next = minNode->next->next; // 否则,将前一个节点指向下一个节点
}
}
```
在这个函数中,我们首先检查链表长度,如果只有1个元素或者链表为空,则直接删除。然后遍历链表寻找最小值节点,最后通过改变指针来删除它。
阅读全文