数据结构与算法
一路没你
这个作者很懒,什么都没留下…
展开
-
Python中的链表之双向链表
< Data Structures andAlgorithms in Python > Michael T.Goodrich,Roberto Tamassia,Michael H.Goldwasser 学习笔记 双向链表的实现        和单向链表不同,双向链表添加了头节点和尾节点,这两个节点不存储元素。它原创 2018-11-29 09:41:44 · 301 阅读 · 0 评论 -
Python中的链表之单向链表实现栈和队列
Python中除了列表,还有链表这样的基础数据结构,之前我们都是介绍用列表实现栈、队列这样的数据结构的,接下来我们看一下用链表实现的栈和队列。 既然列表已经可以实现栈和队列了,那么链表又有什么存在的意义呢?当然是因为列表有一些明细的缺点: 内存的分配:底层数组大小要比实际列表的大; 摊销的边界:底层数组已满时,继续向列表中添加元素,由于要换底层数组并转移数据,这时的时间复杂度明显要比之前添加元素...原创 2018-11-25 19:53:44 · 1606 阅读 · 1 评论 -
Python用列表实现栈,队列(二)
用列表实现队列        队列和栈实现的功能差不多,无非是入队列,出队列,队列长度等等。其中,入队列可以用列表的append()来实现,出队列可以使用pop(0)来实现。由于这个实现方法比较简单,因此它也是最低效的。append方法入队列和栈实现分析的一样,每次添加元素都有可能要换底层数组,所以效率不高;pop(0)操作的调用总是最坏情原创 2018-11-25 15:10:12 · 405 阅读 · 0 评论 -
Python用列表实现栈,队列(一)
用列表实现栈 栈方法 列表实现 S.push() L.append() S.pop() L.pop() S.top() L[-1] S.is_empty() len(L)==0 len(S) len(L) 如上表,栈功能的实现分别对应于列表的以上方法,代码如下: class Empty(Exception): def __init__(self, m)...原创 2018-11-24 21:12:36 · 848 阅读 · 0 评论 -
python动态数组和摊销分析
python动态数组和摊销分析 python中创建数组,计算机系统先会创建一个低层次数组,以便系统为其存储分配连续内存,通常情况下,底层数组会比列表的长度更长。当我们声明一个列表list,并向其中添加元素,一旦元素数量超过底层数组的大小,列表类会向系统重新申请一个更大的底层数组,并使这个更大的底层数组的前面部分和原来的数字一样。这时原来的数组就不需要了,会给系统回收,这样一来,可以继续向列表中添加...原创 2018-11-13 16:48:25 · 2095 阅读 · 0 评论