def printLinkedList(head,a): #s输出链表 if head==-1: return print("空链表") p=head while a[p][1]!=-1: print(a[p][0],end="->") p=a[p][1] print(a[p][0]) s=[[1,3],[2,0],[3,-1],[4,4],[5,2]] print("删除前:") printLinkedList(head,s) n = int(input()) p1= p2 = head=1 #p2是快指针,p1是慢指针 while p2 !=-1: 先让快指针走n+1步 然后快慢指针一起走,直到快指针为-1,此时慢指针为前驱节点。 if 补充代码: head = s[head][1] else: s[p1][1] = s[s[p1][1]][1] print("删除后:") printLinkedList(head,s)
时间: 2023-11-20 20:06:50 浏览: 79
这段代码存在一些缩进问题,可能会导致运行出错。下面是一个修正后的版本:
```
def printLinkedList(head,a):
# 输出链表
if head==-1:
return print("空链表")
p=head
while a[p][1]!=-1:
print(a[p][0],end="->")
p=a[p][1]
print(a[p][0])
# 测试printLinkedList函数
s=[[1,3],[2,0],[3,-1],[4,4],[5,2]]
print("删除前:")
printLinkedList(1,s)
# 删除倒数第n个节点
n = int(input())
p1 = p2 = head = 1 #p2是快指针,p1是慢指针
while p2 != -1:
# 先让快指针走n+1步
for i in range(n+1):
if p2 == -1:
break
p2 = s[p2][1]
# 然后快慢指针一起走,直到快指针为-1,此时慢指针为前驱节点。
if p2 == -1:
s[p1][1] = s[s[p1][1]][1]
else:
p1 = s[p1][1]
p2 = s[p2][1]
# 输出删除后的链表
print("删除后:")
printLinkedList(head,s)
```
你可以尝试运行这份代码,并根据需要进行调试。
阅读全文