Python基于列表实现数据结构栈stack和队列queue

Python基于列表实现数据结构栈stack和队列queue

python中栈的实现

栈是一种后进先出(LIFO)的数据结构,只能在一端(栈顶)插入和删除元素,而python中的列表的append()方法对应的就是向栈顶添加元素,列表的pop()方法对应的就是弹出栈顶元素,因此,python中的列表可以作为栈这种数据结构。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack.pop()
4
>>> stack
[3]

python中队列的实现

队列是一种先进先出(FIFO)的数据结构,在一端(队尾)插入元素,在另一端(队首)删除元素。而如果用列表实现这种数据结构不是很高效,原因在于在列表尾插入和删除元素是很快的(时间复杂度O(1)),而在列表头插入元素是很慢的(时间复杂度O(n)),因为在列表头部插入和删除元素,列表中其余所有元素都要移动。
为了实现队列,用collections.deque双端队列,可以在两端快速的插入和删除元素(时间复杂度都是O(1))。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> from collections import deque
>>> queue = deque(['A', 'B', 'C'])
>>> queue.append('D')
>>> queue.append('E')
>>> queue
deque(['A', 'B', 'C', 'D', 'E'])
>>> queue.popleft()
'A'
>>> queue.popleft()
'B'
>>> queue.popleft()
'C'
>>> queue.popleft()
'D'
>>> queue
deque(['E'])

双端队列collections.deque也是基于列表实现的,由此可以看出基础的数据结构,在Python中通常无需我们自己实现,基于python现有的强大的数据类型,很容易构造出我们想要的数据结构。

本文标题:Python基于列表实现数据结构栈stack和队列queue

文章作者:shuke

发布时间:2020年04月20日 - 15:04

最后更新:2020年04月20日 - 15:04

原始链接:https://shuke163.github.io/2020/04/20/Python%E5%9F%BA%E4%BA%8E%E5%88%97%E8%A1%A8%E5%AE%9E%E7%8E%B0%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E6%A0%88stack%E5%92%8C%E9%98%9F%E5%88%97queue/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------

本文标题:Python基于列表实现数据结构栈stack和队列queue

文章作者:shuke

发布时间:2020年04月20日 - 15:04

最后更新:2020年04月20日 - 15:04

原始链接:https://shuke163.github.io/2020/04/20/Python%E5%9F%BA%E4%BA%8E%E5%88%97%E8%A1%A8%E5%AE%9E%E7%8E%B0%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E6%A0%88stack%E5%92%8C%E9%98%9F%E5%88%97queue/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%