AcWing 826. 单链表
原题链接
简单
作者:
旺仔碎冰冰_
,
2024-04-05 20:40:36
,
所有人可见
,
阅读 3
###单链表和双链表的这2个模板题都可以采用定义一个insert函数和一个remove函数的思路,把最链表头设置成0,链表尾为-1,这样idx就是第几个数,不需要在下标和第几个数上思考,即idx从1开始。
def insert(k,x):
global idx
e[idx] = x
ne[idx] = ne[k]
ne[k] = idx
idx += 1
def remove(k):
ne[k] = ne[ne[k]]
if __name__ == "__main__":
M = int(input())
N = 100010
e = [0]*N
ne = [0]*N
idx = 1
ne[0] = -1
for _ in range(M):
ls = list(input().split())
if ls[0] == 'D':
k = int(ls[1])
if k == 0:
ne[0] = ne[ne[0]]
else:
remove(k)
elif ls[0] == 'H':
x = int(ls[1])
insert(0,x)
else:
k = int(ls[1])
x = int(ls[2])
insert(k,x)
i = ne[0]
ans = []
while i != -1:
ans.append(e[i])
i = ne[i]
print(' '.join(map(str,ans)))