欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【待补充】关于链表的二三事

程序员文章站 2022-05-12 17:10:51
...

这篇博文仅记录有关链表的操作,供回忆与参考。

1、概述

链表在我看来是储存数据的工具,原理上讲表上每一个节点有两个属性,也可以说是格子,第一个存放数据,第二个存放下一个节点地址。最后一个节点只存放数据,第二个属性指向None。
由此,每个链表的第一个节点地址需要单独存放。

链表优点是可以无序存放,最大可能利用空间;而付出的代价就是需要一点额外空间来存放每个节点的第二个属性。但总的来说这是值得的。

2、节点类的构造
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None
3、如何将一段数据保存到节点
#这里是将一个列表的数据按元素分割保存到链表。
#对如下for循环来说,只要是可迭代的数据,都可以如此保存。
Sum=[1,2,3,4,5]
tmp_node = ListNode(None)
node = ListNode(None)
for i in Sum:
    if tmp_node.val is None:
        tmp_node = ListNode(i)
        node = tmp_node
    else:
        tmp_node.next = ListNode(i)
        tmp_node = tmp_node.next
4、给出表头,如何访问整个链表数据
def getListNode(head: ListNode):
	ls=[]#容器
	while True:
		ls.append(head)#将节点放入容器
		if head.next==None:break
		head=head.next#得到下一个节点
	#保存到ls里的每个元素都是一个ListNode类,通过索引访问到的元素就是一个类实例。
	print(ls,ls[0].val)