删除单链表中最大值结点并返回值(用python语言实现)
时间: 2024-10-24 18:10:44 浏览: 88
在Python中,我们可以创建一个单链表节点类,并编写一个函数来删除链表中最大的元素,同时返回这个最大值。这里是一个简单的实现:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def delete_and_return_max(head):
if not head or not head.next: # 如果链表为空或只有一个元素
return None, head.val
max_val = head.val # 初始化最大值为头节点的值
current = head # 当前指针指向头节点
while current.next: # 遍历链表
if current.next.val > max_val: # 找到较大值
max_val = current.next.val
current = current.next # 移动指针到下一个节点
# 更新头节点,使其不再包含最大值
if head.val == max_val: # 如果最大值在头节点
head = head.next
else:
prev_node = head # 查找上一个大于最大值的节点
while prev_node.next and prev_node.next.val != max_val:
prev_node = prev_node.next
prev_node.next = prev_node.next.next # 跳过最大值节点
return None, max_val # 返回None表示链表已更新,max_val是删除的最大值
# 示例用法
# 创建链表 [3, 5, 2, 6, 4]
head = ListNode(3)
head.next = ListNode(5)
head.next.next = ListNode(2)
head.next.next.next = ListNode(6)
head.next.next.next.next = ListNode(4)
deleted_head, max_value = delete_and_return_max(head)
print("删除后的链表首节点:", deleted_head.val) # 输出:3
print("删除的最大值:", max_value) # 输出:6
```
阅读全文