AcWing 826. 单链表-python3用数组实现
原题链接
简单
作者:
机械佬也想学编程
,
2020-06-25 17:12:34
,
所有人可见
,
阅读 1262
def add_to_head(x): # 将x添加到头节点
global cur
global head
val[cur] = x
next[cur] = head
head = cur
cur += 1
def add(k, x): # 在第k个输入的数后面插入一个数x
global cur
val[cur] = x
next[cur] = next[k]
next[k] = cur
cur += 1
def delete(k): # 删除第k个输入的数后面的数
global head
if k == 0: # 当k为0时,表示删除头结点
head = next[head]
return
next[k] = next[next[k]]
N = 100010 # 操作次数的范围1≤M≤100000
val = [0] * N # 存放每个链表节点的值
next = [0] * N # 存放每个链表节点指向下一个节点的指针值
head = -1 # head表示头节点的开始索引,当head为-1时,链表为空
cur = 1 # cur表示正在用链表中的那一个节点
m = int(input())
for _ in range(m):
s, *p = input().split()
if s == "I":
k, x = map(int, p)
add(k, x)
elif s == "H":
x = int(p[0])
add_to_head(x)
else:
k = int(p[0])
delete(k)
tail = head # 从头节点开始遍历整个链表并输出每个节点的值
while tail != -1:
print(val[tail], end=" ")
tail = next[tail]
next最好用-1初始化?