图的邻接表的实现

class list_node:
    def __init__(self):
        self.val = 0
        self.next = None
#创建链表类

head = [list_node()] * 6  # 声明一个节点类型的链表

newnode = list_node()

# 图的数组声明
data = [[1, 2], [2, 1], [2, 5], [5, 2], \
        [2, 3], [3, 2], [2, 4], [4, 2], \
        [3, 4], [4, 3], [3, 5], [5, 3], \
        [4, 5], [5, 4]]

print('图的邻接表内容:')
print('----------------------------------')
for i in range(1, 6):
    head[i].val = i  # 链表头head
    head[i].next = None
    print('顶点 %d =>' % i, end='')  # 把顶点值打印出来
    ptr = head[i]
    for j in range(14):  # 遍历图的数组
        if data[j][0] == i:  # 如果节点值=i,加入节点到链表头
            #print('######', newnode.val)
            newnode.val = data[j][1]  # 声明新节点,值为终点值
            newnode.next = None
            while ptr != None:  # 判断是否为链表的末尾
                ptr = ptr.next
            ptr = newnode  # 加入新节点
            print('[%d] ' % newnode.val, end='')  # 打印相邻顶点
    print()

posted @ 2019-05-10 19:24  橘子先生123  阅读(311)  评论(0编辑  收藏  举报