栈的相关算法问题----如何用两个栈模拟队列操作

用两个栈模拟队列,首先,要清楚两个数据结构的特点。栈是先进后出而队列是先进先出。显然,一个栈是没有办法实现队列的功能,这里我们需要一个插入栈,和一个弹出栈。插入栈执行队列的插入功能,弹出栈执行队列的弹出功能。

class Stack():
	def __init__(self):
		self.items=[]
	def is_empty(self):
		return len(self.items)==0
	def pop(self):
		if self.is_empty():
			print("栈空了")
			return None
		else:
			return self.items.pop()
	def push(self,data):
		self.items.append(data)
	def peek(self):
		if self.is_empty():
			return None
		else:
			return self.items[len(self.items)-1]
class Myqueue():
	def __init__(self):
		self.rustack=Stack()
		self.chustack=Stack()
	def enqueue(self,data):
		self.rustack.push(data)
	def popqueue(self):
		if self.chustack.is_empty():
			while not self.rustack.is_empty():
				self.chustack.push(self.rustack.peek())
				self.rustack.pop()
		first=self.chustack.peek()
		self.chustack.pop()
		return first
if __name__=="__main__":
	s=Myqueue()
	s.enqueue(1)
	s.enqueue(2)
	s.popqueue()
			
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值