【数据结构】课设1:头插法构造链表

class Node():  # 定义节点类
    def __init__(self, item):  # 初始化数据
        self.item = item  # 把数据存入节点
        self.next = None  # 默认next节点为None

# 注意,传入的数据形式为列表,可一次性插入多个数据
def creat_head(datalist, linklist):  # 分别传入要插入的数据列表,和非空单链表
    head_node = Node(datalist[0])  # 定义头节点,把datalist的第一个元素赋给头节点
    head_node.next = linklist  # 把该节点连接在链表最开头
    for data in datalist[1:]:  # 遍历剩余数据
        node = Node(data)  # 创建新节点
        node.next = head_node  # 把新节点插在头节点的前面
        head_node = node  # 把新节点命名为头节点,以便重复上述操作
    return head_node  # 返回改链表的首地址,从而可遍历展示该链表

def print_linklist(current_node):  # 打印链表(传入头节点)
    while current_node:  # 当前节点非空时
        print(current_node.item, end = ' ')  # 打印链表节点的数据元素
        current_node = current_node.next  # 移动指针,重复循环

# 下面用最朴素的方法创建一个非空单链表
a = Node(1)  # 创建一个独立节点
a.next = Node(2)  # 在a后连接新节点
a.next.next = Node(3)  # 连接新节点
print_linklist(a)  # 展示该链表 ( 1 2 3 )

print('\n')

linklist1 = creat_head([8,7,6], a)  # 头插法把该列表插入a链表
print_linklist(linklist1)  # 展示链表
赞赏