链表的一些知识

高总 2023-12-27 285 12/27

这两天做leetcode的时候用到了不少链表的知识,顺序表的很多知识无法迁移到链表上,导致很多题解法过于复杂,所以补充一些链表的知识(代码示例基于Python)。

在python中用next指向下一个节点的位子

具体示例代码为:

self.item=item
self.next=None

然后是传统的增删改查环节:

向头部增加元素add(item)

向尾部增加元素append(item)

指定位置增加元素insert(pos,item)

删除某个元素remove(item)

查找某个元素是否存在search(item)

还有一些别的操作

例如判断链表是否为空 is_empty()

链表长度length()

遍历全部链表travel()

那么并没有相应的语法来特别定义地址,如何在python中实现

这里需要提到python中的一种特殊用法

a=1
b=2
a,b=b,a

这是只有在python中成立的一种写法,会交换a与b的值

这是因为在python中,这里的a=1并不意味着开辟一块内存,里面存放着10,a代表着这个内存的别名,而是说开辟了另外一块内存a,然后a中存储着10的地址从而指向10

在a,b=b,a时,从等号右边开始读取,a指向的是1,b指向的是2,这里交换的是ab的指向,而并没有交换保存1和2的空间,这也是python语言不需要指定变量类型的原因。

因此,从node1指向node2的时候,只需要直接node1.next=node2即可

因为此时=其实就是赋予了一个链接,指向了node2指向的元素

 

- THE END -

高总

12月27日19:50

最后修改:2023年12月27日
0

非特殊说明,本博所有文章均为博主原创。