本关任务:给定程序中已建立一个带有头结点的单向链表,在 main 函数中将多次调用 DeleteTail 函数,每调用一次 DeleteTail函数,释放该该链表的尾结点,使链表缩短。 相关知识 为了完成本关任务,你需要掌握:1.如何定义和调用函数;2.链表的相关知识。 编程要求 请勿改动主函数 main 和其他函数中的任何内容,根据提示,在右侧编辑器的Begin-End区域内补充代码。然后调试运行使程序得到正确的结果。 测试说明 平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试。 输入:第一行是一个整数n(1<n<80),第二行是n个整数,第三行是一个整数m(m<n)。 输出:一个带有HEAD的长度为n-m的链表。 测试输入: 5 1 5 9 6 8 2 预期输出: Head->1->5->9->End 测试输入: 10 1 2 3 4 5 6 7 8 9 10 5 预期输出: Head->1->2->3->4->5->End
时间: 2024-04-14 21:30:33 浏览: 161
不带表头结点的线性链表的实现
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def DeleteTail(head):
if head.next is None:
return head
cur = head
while cur.next.next is not None:
cur = cur.next
cur.next = None
return head
def printList(head):
cur = head.next
res = []
while cur is not None:
res.append(str(cur.val))
cur = cur.next
print('Head->' + '->'.join(res) + '->End')
if __name__ == '__main__':
n = int(input())
nums = list(map(int, input().split()))
m = int(input())
head = ListNode()
cur = head
for num in nums:
cur.next = ListNode(num)
cur = cur.next
for _ in range(m):
head = DeleteTail(head)
printList(head)
```
阅读全文