请选择 进入手机版 | 继续访问电脑版
绿茶科技社区

Python 栈、队列的实现

2019-10-10 08:13
481
在python中,列表既可以作为栈使用,又可以作为队列使用。
把列表作为栈使用
栈:后进先出
  1. stack=[1,2,3]
  2. stack.append(4)  #入栈,以列表尾部为栈顶
  3. print(stack.pop())  #出栈  4
  4. print(stack)  #[1, 2, 3]
复制代码
把列表作为队列使用
队列:先进先出
  1. from collections import deque
  2. list=[1,2,3]
  3. queue=deque(list)  #将列表转换为队列
  4. queue.append(0)  #入队,添加到队列尾部
  5. print(queue.popleft())  #出队,弹出并返回队首元素
  6. print(queue)  #deque([2, 3, 0])

  7. #把列表作为队列使用,效率不高,因为出队时要移动后面所有的元素。
复制代码
deque
deque 是双边队列,同时具有栈和队列的性质,可进行栈、队列相关的操作。并且还在在 list 的基础上增加了移动、旋转和增删等操作。
  1. from collections import deque  #需要导入模块
  2. list=[1,2,3]
  3. deque=deque(list)  #将列表转换为deque

  4. deque.append(4)  #添加到尾部
  5. print(deque)  #deque([1, 2, 3, 0])

  6. deque.appendleft(0)  #添加到首部
  7. print(deque)  #deque([0, 1, 2, 3, 4])

  8. print(deque.pop())   #弹出并返回最后一个元素  4
  9. print(deque)  #deque([0, 1, 2, 3])

  10. print(deque.popleft())  #弹出并返回左边第一个元素  0
  11. print(deque)  #deque([1, 2, 3])
复制代码
deque实现栈:
  1. from collections import deque  #需要导入模块
  2. list=[1,2,3]
  3. deque=deque(list)  #将列表转换为deque

  4. #作为栈使用:方式一
  5. deque.append(4)  #入栈
  6. print(deque)  #deque([1, 2, 3, 4])
  7. print(deque.pop())  #出栈  4
  8. print(deque)  #deque([1, 2, 3])

  9. #作为栈使用:方式二
  10. deque.appendleft(0)  #入栈
  11. print(deque)  #deque([0,1, 2, 3])
  12. print(deque.pop())  #出栈  3
  13. print(deque)  #deque([0, 1, 2])

  14. #只要实现后进先出即可
复制代码
deque实现队列:
  1. from collections import deque  #需要导入模块
  2. list=[1,2,3]
  3. deque=deque(list)  #将列表转换为deque

  4. #作为队列使用:方式一
  5. deque.append(4)  #入队
  6. print(deque)  #deque([1, 2, 3, 4])
  7. print(deque.popleft())  #出队  1
  8. print(deque)  #deque([2, 3, 4])
复制代码
  1. from collections import deque  #需要导入模块
  2. list=[]  #空列表
  3. deque=deque(list)

  4. #作为队列使用:方式二
  5. deque.appendleft(1)  #入队
  6. deque.appendleft(2)  
  7. print(deque)  #deque([2, 1])
  8. print(deque.pop())  #出队  1
  9. print(deque)  #deque([2])

  10. #这种方式需要list是空的

  11. #只要实现先进先出即可
复制代码



分享到 :
0 人收藏

1 个回复

倒序浏览
施杨  金牌会员 | 2019-10-10 08:27:27
介是神马?!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

举报|Archiver|手机版|小黑屋|Lvchakeji Inc.  

Powered by Discuz! X3.3 © 2001-2016 Comsenz Inc.

返回顶部