基于数组实现单链表
邻接表:由n个链表组成,常用与树、图结构的存储
e[n] # 点n的值是多少
ne[n] # 点n指向的下一个节点
# 假设有链表如下
# 1 -> 2 -> 4
# 使用数组存储则为
e[0] = 1
ne[0] = 1
e[1] = 2
ne[1] = 2
e[2] = 4
ne[2] = -1 # -1代表该点指向的点为空单链表实现
Python
n = 100000
head = -1 # 记录头节点
idx = 0 # 当前可使用点的下标(指针)
# 将x插入到头节点前面
def add_to_head(x):
global idx
global head
e[idx] = x
ne[idx] = head
head = idx
idx += 1
# 将x插入到下标为k的点的后面
def add(k, x):
global idx
e[idx] = x
ne[idx] = ne[k]
ne[k] = idx
idx += 1
# 将下标为k的点的后面第一个点移除
def remove(k):
ne[k] = ne[ne[k]]
if __name__ == '__main__':
e = [0] * n # 初始化值数组
ne = [-1] * n # 初始化指针数组
m = int(input())
for _ in range(m):
k = x = 0
t = input()
# 将x插入到头节点
if t[0] == "H":
x = int(t.split(" ")[-1])
add_to_head(x)
elif t[0] == "D": # 移除第k个点,下标为k-1
k = int(t.split(" ")[-1])
if k == 0: # 移除头节点
head = ne[head]
continue
remove(k - 1)
else:
k, x = [int(x) for x in t.split(" ")[1:]]
add(k - 1, x)
i = head
while i != -1:
print(e[i])
i = ne[i]
"""
IN:
10
H 9
I 1 1
D 1
D 0
H 6
I 3 6
I 4 5
I 4 5
I 3 4
D 6
OUT:
6
4
6
5
"""Go
最后更新于
这有帮助吗?