用python写单链表

简介: 用python写单链表

链表的数据结构

链表是什么呢,来看下

链表,是一种数据结构。相对于数组而言,是不连续的一块内存空间。不仅如此,而且链表有多种,包括:单链表,双向链表,循环链表。这里先说下单链表。


单链表

单链表,由data数据域和next指针组成。简单点,就如下代码:

class Node:
    def __init__(self, data: int, nextNode: None):
        self._data = data
        self._nextNode = nextNode

操作

先说插入吧,插入分为几种情况,头插入,尾插入,中间任意位置插入。

头插入

代码如下:

尾插入

这个也比较简单,如下图:

中间插入

这个就比较复杂了,中间某个Node插入,分为2中情况, 这个位置的前边还是后边呢?接下来看代码,如下图,前边插入:

还有一种情况是后边插入,如下图:

插入就结束了。插入简单,但是查找费时。


来看下删除操作吧,删除的操作代码如下:

时间复杂度:O(n),这个主要浪费在查找上。

查找

代码如下:

时间复杂度O(n)

总结

总得来说,链表和数组相比,不是连续的内存空间,相对来说也复杂一点。插入操作和删除操作虽然比较效率高,但是时间耗费在查找上。查找的效率是O(n)。

相关文章
|
13天前
|
存储 Python 索引
【Python编程挑战】:单链表实现技巧与最佳实践
【Python编程挑战】:单链表实现技巧与最佳实践
|
17天前
|
SQL 算法 数据可视化
LeetCode题目92:反转链表ll 【python 递归与迭代方法全解析】
LeetCode题目92:反转链表ll 【python 递归与迭代方法全解析】
|
18天前
|
算法 数据挖掘 Python
LeetCode题目25 hard:K个一组翻转链表 【分治策略 Python】
LeetCode题目25 hard:K个一组翻转链表 【分治策略 Python】
|
18天前
|
存储 SQL 算法
|
18天前
|
存储 算法 数据挖掘
Leetcode二十三题:合并K个升序链表【22/1000 python】
Leetcode二十三题:合并K个升序链表【22/1000 python】
|
18天前
|
SQL 算法 数据挖掘
LeetCode 二十一:合并两个有序链表 【python】
LeetCode 二十一:合并两个有序链表 【python】
|
18天前
|
SQL 算法 数据挖掘
力扣题目 19:删除链表的倒数第N个节点 【python】
力扣题目 19:删除链表的倒数第N个节点 【python】
|
22天前
|
算法 Java C语言
【经典算法】LeetCode25:K 个一组翻转链表(Java/C/Python3,Hard)
【经典算法】LeetCode25:K 个一组翻转链表(Java/C/Python3,Hard)
9 1
|
22天前
|
算法 安全 Java
【经典算法】LeetCode 21:合并两个有序链表Java/C/Python3实现含注释说明,Easy)
【经典算法】LeetCode 21:合并两个有序链表Java/C/Python3实现含注释说明,Easy)
15 1
|
1月前
|
存储 算法 搜索推荐
使用Python实现单链表
使用Python实现单链表
28 0