删除单链表中最大值结点并返回值的实验内容
时间: 2024-06-13 20:07:04 浏览: 104
链表中删除相同结点实验报告及源码
以下是删除单链表中最大值结点并返回值的Python实现:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def del_max_node(head: ListNode) -> int:
if not head or not head.next:
return None
pre, p, maxp, maxpre = head, head.next, head.next, head
while p:
if maxp.val < p.val:
maxp = p
maxpre = pre
pre = p
p = p.next
maxpre.next = maxp.next
return maxp.val
```
其中,ListNode是链表的节点类,del_max_node函数接收一个链表头节点head,返回删除的最大值结点的值。在函数中,我们首先判断链表是否为空或只有一个节点,如果是,则直接返回None。接着,我们定义四个指针pre、p、maxp和maxpre,分别表示当前节点的前驱节点、当前节点、最大值节点和最大值节点的前驱节点。我们遍历链表,如果当前节点的值比最大值节点的值大,则更新最大值节点和最大值节点的前驱节点。最后,我们利用更新后的指针删除最大值节点,并返回其值。
阅读全文