Python用List实现栈和队列
2018-03-22 23:05
447 查看
栈的实现
class Stack(): def __init__(self): self.items = [] # 初始化一个列表 def is_empty(self): # 如果为空则返回True 否则返回False return self.items == [] def pop(self): try: return self.items.pop() except: raise def push(self, item): self.items.append(item) def peek(self): # 返回栈顶的元素 return self.items[len(self.items)-1] def size(self): return len(self.items)
队列的实现
class Queue(): def __init__(self): self.items = [] def is_empty(self): return self.items == [] def enqueue(self, item): # 从队尾插入 self.items.insert(0, item) def dequeue(self): try: # 从队首弹出 return self.items.pop() except: raise def peek(self): return self.items[0] def size(self): return len(self.items)
用两个栈实现队列的操作
思路:因为栈是先进后出的,队列是先进先出的。那么,设两个栈分别为s1和s2。
当进行入队的时候,可以直接在s1上进行压栈的操作;
当进行出队的时候,因为是先进要先出,因此可以将s1的元素倒出到s2中,然后在s2进行弹栈的操作;
# -*- coding:utf-8 -*- class Solution: def __init__(self): # 初始化两个栈 self.stack1 = [] self.stack2 = [] def push(self, node): # 直接在s1进行弹栈 self.stack1.append(node) def pop(self): # 如果s2不为空,则直接进行弹栈 if self.stack2: return self.stack2.pop() # 如果s2为空,则返回寻找s1中的元素 elif not self.stack1: # 如果s1为空,则返回空置,没有元素可以弹出 return None else: # 否则将s1的元素倒入到s2中,再弹栈 while self.stack1: self.stack2.append(self.stack1.pop()) return self.stack2.pop()
相关文章推荐
- python 栈和队列(使用list实现)
- leetcode_107. Binary Tree Level Order Traversal II 二叉树层次遍历,利用python的list特性实现队列功能
- Python 使用list实现队列 (基于class, 包含迭代器)
- python 栈和队列(使用list实现)
- Python基于list的append和pop方法实现堆栈与队列功能示例
- python 栈和队列(使用list实现)
- Python 使用list实现无边际优先队列 (基于class, 包含迭代器)
- python 栈和队列(使用list实现)
- python 栈和队列(使用list实现)
- python 栈和队列(使用list实现)
- 用python实现栈和队列
- Python 使用list实现堆栈 (基于class, 包含迭代器)
- 使用python实现栈和队列
- 队列的Python实现
- Python实现队列数据结构
- python列表list的实现技术原理
- python实现堆栈与队列的方法
- 基础数据结构:栈、队列——Python实现
- 栈和队列数据结构的基本概念及其相关的Python实现
- [Python面试知识]数据结构之栈和队列实现