用两个栈实现队列与用两个队列实现栈(Python实现)

用两个栈实现队列:

 1 class QueueWithTwoStacks(object):
 2     def __init__(self):
 3         self._stack1 = []
 4         self._stack2 = []
 5 
 6     def appendTail(self,x):
 7         self._stack1.append(x)
 8 
 9     def deleteHead(self):
10          if self._stack2:
11              return self._stack2.pop()
12          else:
13              if self._stack1:
14                 while self._stack1:
15                     self._stack2.append(self._stack1.pop())
16                 return self._stack2.pop()
17              else:
18                  return None

 

 

用两个队列实现栈:

 1 class StackWithTwoQueues(object):
 2     def __init__(self):
 3         self._stack1 = []
 4         self._stack2 = []
 5 
 6     def push(self,x):
 7         if len(self._stack1) == 0:
 8             self._stack1.append(x)
 9         elif len(self._stack2) == 0:
10             self._stack2.append(x)
11         if len(self._stack2) == 1 and len(self._stack1) >= 1:
12             while self._stack1:
13                 self._stack2.append(self._stack1.pop(0))
14         elif len(self._stack1) == 1 and len(self._stack2) > 1:
15             while self._stack2:
16                 self._stack1.append(self._stack2.pop(0))
17 
18     def pop(self):
19         if self._stack1:
20             return self._stack1.pop(0)
21         elif self._stack2:
22             return self._stack2.pop(0)
23         else:
24             return None

 

转载于:https://www.cnblogs.com/hwf-73/p/7705100.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值