链表

1 把list转化为链表

对链表的第一个节点先进行赋值,因为其比较特殊,不方便放入for循环中.

first_node中是表头变量,它用于记录第一个节点数据域的地址,可以看做是独立于整个链表的一个特殊的量.

class ListNode:
    def __init__(self, data, next_=None):
        # 数据域
        self.data = data
        # 指针域,用于指向下一节点的指针域
        self.next = next_
def from_list_to_node(l):
    # new一个链表对象,实际上链表的每个节点都是一个对象
    # 每当新建一个链表时,head表头变量就指向第一个节点的数据域.
    first_node = ListNode(l[0])
    # 把对象的引用传给previous_node,可以看成把head表头变量传过去了,
    previous_node = first_node
    for val in l[1:]:
        # 每当新建一个节点(对象)时,就把该节点(对象)的地址传给上一个节点的指针域记录下来
        previous_node.next = ListNode(val)
        # 此时previous_node中指向的是上一个节点的地址,现在把它更新为下一个节点的地址,
        # 因为下一个节点中数据域已经有值了,但指针域还是空,它准备指向下下一个节点(对象)
        previous_node = previous_node.next
    return first_node
p = from_list_to_node([1,3,5])
while p is not None:
    print(p.data)
    p = p.next
# 1
# 3
# 5
View Code
原文地址:https://www.cnblogs.com/xxswkl/p/11878084.html