设计一个算法,删除一个单链表L={5,6,10,3,2,1}中第一个元素值最大的结点。
时间: 2024-04-02 22:30:13 浏览: 17
要设计一个算法删除单链表中第一个元素值最大的节点,可以按照以下步骤进行:
1. 遍历整个链表,找到最大值以及对应的节点的前一个节点。
2. 如果最大值节点是头节点,直接将头节点指向下一个节点。
3. 如果最大值节点不是头节点,将前一个节点的next指针指向最大值节点的下一个节点。
下面是具体的实现代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def delete_max_node(head):
if not head or not head.next:
return head
max_val = head.val
max_prev = None
cur = head
while cur.next:
if cur.next.val > max_val:
max_val = cur.next.val
max_prev = cur
cur = cur.next
if head.val == max_val:
head = head.next
else:
max_prev.next = max_prev.next.next
return head
# 创建链表
L = ListNode(5)
L.next = ListNode(6)
L.next.next = ListNode(10)
L.next.next.next = ListNode(3)
L.next.next.next.next = ListNode(2)
L.next.next.next.next.next = ListNode(1)
# 删除最大值节点
L = delete_max_node(L)
# 打印链表
cur = L
while cur:
print(cur.val, end=" ")
cur = cur.next
```
输出结果为:5 6 3 2 1