一、数组模拟单链表、邻接表

Untitled

class single_list():
    def __init__(self,N):
        self.head = -1 # 存放头结点指针
        self.e = [0] * N # 存放值
        self.ne = [0] * N # 存放next指针
        self.idx = 0 # 存放当前数组可以存放的位置,也是数量的表现

    def add_to_head(self,x):
        self.e[self.idx] = x
        self.ne[self.idx] = self.head
        self.head = self.idx
        self.idx += 1

    def add(self, k, x): # 在下标为k的点后面插入节点
        self.e[self.idx] = x
        self.ne[self.idx] = self.ne[k]
        self.ne[k] = self.idx
        self.idx += 1

    def remove(self, k): # 将下标为k的点后面的点删掉
        self.ne[k] = self.ne[self.ne[k]]

l = single_list(100)
l.add_to_head(1)
l.add_to_head(2)
i = l.head
while i != -1:
    print(l.e[i])
    i = l.ne[i]

二、数组模拟双链表(优化某些问题)