假设单链表有唯一的最大值,创建一个单链表,并删除其最大值。 提示:用头插法建立链表 【输入形式】从键盘输入若干个整数,以空格分开,-1作为输入结束。 【输出形式】输出删除最大值后的单链表的所有值。 【样例输入】65 5 6 78 12 -1 【样例输出】12 6 5 65
时间: 2023-12-04 09:02:35 浏览: 22
以下是 Python 代码实现:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
# 头插法建立单链表
def createLinkedList(nums):
dummy = ListNode()
for num in nums:
node = ListNode(num)
node.next = dummy.next
dummy.next = node
return dummy.next
# 删除最大值
def deleteMax(head):
max_val = float('-inf')
prev, curr = None, head
while curr:
if curr.val > max_val:
max_val = curr.val
prev = prev
prev, curr = curr, curr.next
if prev:
prev.next = prev.next.next
else:
head = head.next
return head
# 输出单链表
def printLinkedList(head):
res = []
curr = head
while curr:
res.append(curr.val)
curr = curr.next
print(' '.join(map(str, res)))
# 测试样例
nums = list(map(int, input().split()))
head = createLinkedList(nums)
head = deleteMax(head)
printLinkedList(head)
```
输入样例:
```
65 5 6 78 12 -1
```
输出样例:
```
12 6 5 65
```