AcWing 826. 单链表-python
原题链接
简单
作者:
Actor丶
,
2020-03-18 22:21:47
,
所有人可见
,
阅读 791
# 将x插到节点头,其中x表示节点的值
def add_to_head(x):
global idx, head
e[idx] = x
ne[idx] = head
head = idx
idx+=1
# 删除第k个节点的后一个节点,其中k表示节点编号
def delete(k):
ne[k] = ne[ne[k]]
# head = ne[head] # 删除头结点
# 在第k个节点后面插入节点x
def insert(k, x):
global idx
e[idx] = x
ne[idx] = ne[k]
ne[k] = idx
idx += 1
if __name__=="__main__":
m = int(input().strip())
N = 100010 # 表示最大节点数
# 初始化单链表
head = -1 # head表示头结点的下标
e = [0]*N # e[i]表示节点i的取值
ne = [0]*N # ne[i]表示节点i的next指针
idx = 0 # idx表示当前正在用的哪个点
for i in range(m):
in_li = input().split()
if in_li[0]=="H":
x = int(in_li[1])
add_to_head(x)
elif in_li[0]=="D":
k = int(in_li[1])
if k==0:
head = ne[head] # 删除头结点
else:
delete(k - 1)
else:
k = int(in_li[1])
x = int(in_li[2])
insert(k-1, x)
# 循环遍历单链表
idx = head # !!!出错:遍历时idx取值为head,而不应该是0
while idx!=-1:
print(e[idx], end=" "); idx = ne[idx]