📅  最后修改于: 2023-12-03 15:04:40.737000             🧑  作者: Mango
本程序的主要功能是删除链表中指定位置的M个节点,然后再输出链表中指定位置的N个节点。
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def delete_and_output(head: ListNode, m: int, n: int) -> ListNode:
# 删除链表的M个节点后的N个节点
def delete_nodes(node: ListNode, count: int) -> ListNode:
for _ in range(count):
if node is None:
return None
node = node.next
return node
# 创建输出链表
def create_output(node: ListNode, count: int) -> ListNode:
dummy = ListNode()
output = dummy
for _ in range(count):
if node is None:
return output.next
output.next = ListNode(node.val)
node = node.next
output = output.next
return output.next
# 找到要删除节点的前一个节点
m_prev = delete_nodes(head, m-1)
if m_prev is None:
return head
# 删除M个节点
m_prev.next = delete_nodes(m_prev.next, m)
# 找到要输出节点的前一个节点
n_prev = delete_nodes(m_prev.next, n-1)
# 输出N个节点
return create_output(n_prev.next, n)
# 创建链表
head = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)
node5 = ListNode(5)
head.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
# 删除链表的2个节点后的3个节点
result = delete_and_output(head, 2, 3)
# 输出结果
while result:
print(result.val)
result = result.next
以上代码将输出链表中第3个、第4个、第5个节点的值:
3
4
5
请根据实际情况修改参数,使用该函数删除链表中指定位置的节点,并输出指定位置的节点。