class Node: def __init__(self,val=None): self.val=val self.pre=None self.next=None #双向链表+字典 n=int(input()) dummy=Node() tail=Node() dummy.next=tail tail.pre=dummy d={} #记录数值x对应的结点,用列表存储,可能有多个值为x的结点 for i in range(n): op=input().split() if op[0]=='insert': num1, num2=op[1],op[2] if num1 in d.keys(): #假设说链表中存在这个值 p=d[num1][-1] else: p=tail #插入到p.pre和p之间 node=Node(num2) node.next=p p.pre.next=node node.pre=p.pre p.pre=node #插入之后需要维护一下字典 if num2 not in d.keys(): d[num2]=[node] #新建一个list else: d[num2].append(node) #加到list末尾 elif op[0]=='delete': num=op[1] if num in d.keys():#存在的时候才需要执行删除操作,并维护字典 node=d[num][-1] node.pre.next=node.next node.next.pre=node.pre del node #维护字典 if len(d[num])>1: d[num].pop() else: del d[num] cur=dummy.next if not cur.val: print('NULL') else: while cur!=tail: print(cur.val,end=' ') cur=cur.next