826
整体思路没问题,只是需要特殊判断一下,当k==0的时候
N = 100010
h,e,ne,idx = -1, [0]*N, [0]*N,0
def add_to_head(x):
global idx,h
idx+=1
e[idx] = x
ne[idx] = h
h =idx
def add(k,x):
global idx
idx+=1
e[idx] = x
ne[idx] = ne[k]
ne[k] = idx
def remove(k):
global h
if k==0:
h = ne[h]
else:
ne[k] = ne[ne[k]]
m = int(input())
for _ in range(m):
op,*pt = input().split()
if op=='H':
x = int(pt[0])
add_to_head(x)
elif op=='D':
k = int(pt[0])
remove(k)
else:
k,x = map(int,pt)
add(k,x)
while h!=-1:
print(e[h],end=' ')
h = ne[h]
827
还是有3个地方有问题:
1、不要忘记初始化链表
r[0]=1
l[1]=0
2、双链表的结尾是1
3、在最右侧添加的时候,其实是在t的左边的右侧添加,所以应该是add(l[1],x),而不是add(1,x)
N = 100010
h,t,l,r,e,idx =0,1,[0]*N,[0]*N,[0]*N,1
def init():
r[0] = 1
l[1] = 0
def add(k,x):
global idx
idx += 1
r[idx] = r[k]
l[r[k]] = idx
l[idx] = k
r[k] = idx
e[idx] = x
def remove(k):
l[r[k]] = l[k]
r[l[k]] = r[k]
init()
m = int(input())
for _ in range(m):
op, *pt = input().split()
if op == 'L':
x = int(pt[0])
add(0,x)
elif op =='R':
x = int(pt[0])
add(l[1],x)
elif op=='D':
k = int(pt[0])
remove(k+1)
elif op=='IL':
k,x = map(int,pt)
add(l[k+1],x)
else:
k,x = map(int,pt)
add(k+1,x)
h = r[h]
while h!=1:
print(e[h], end=' ')
h = r[h]
去吃饭啦~中午还要把小朋友们的书搬到老师的车上 ~争取能睡个午觉呜呜 ~
好多事情哇
好难受好想哭
虽然已经在哭了呜呜