双链表
作者:
成理第一深情
,
2024-01-07 19:35:54
,
所有人可见
,
阅读 56
N = 100010
e = [0] * N # 结点的值
l = [0] * N # 左指针
r = [0] * N # 右指针
idx = 2 # 表示当前可用的位置
def init():
global e, l, r, idx
r[0] = 1
l[1] = 0
idx = 2
def add(k, x):
"""
在第k个插入的数右边插入一个数x
在k左边插入一个数,其实就是在l[k]的右边插入一个数
"""
global e, l, r, idx
e[idx] = x
r[idx] = r[k]
l[idx] = k
l[r[k]] = idx
r[k] = idx
idx += 1
def remove(k):
"""
删除第k个点
"""
global e, l, r, idx
r[l[k]] = r[k]
l[r[k]] = l[k]
if __name__ == "__main__":
# global e, l, r, idx
m = int(input())
init()
for i in range(m):
opt = input().split(' ')
if opt[0] == "L":
x = int(opt[1])
add(0, x)
elif opt[0] == "R":
x = int(opt[1])
add(l[1], x)
elif opt[0] == "D":
k = int(opt[1])
remove(k + 1)
elif opt[0] == "IL":
k = int(opt[1])
x = int(opt[2])
add(l[k + 1], x)
else:
k = int(opt[1])
x = int(opt[2])
add(k + 1, x)
i = 0
while r[i] != 1:
print(e[r[i]], end= ' ')
i = r[i]