# coding=utf-8

MAX_LENGTH = 100

SUCCESS = 1
FAIL = 0
ERROR = -1 class Queue(object): stack_fir = None
stack_sec = None
queue_len = 0 def __init__(self):
self.stack_fir = Stack()
self.stack_sec = Stack()
self.queue_len = 0 # 队列push方法
def push(self, item):
if self.queue_len == MAX_LENGTH:
return Result(FAIL, None)
elif self.queue_len > MAX_LENGTH:
return Result(ERROR, None) self.queue_len += 1
result = self.stack_fir.push(item)
if result.get_code() == SUCCESS:
return Result(SUCCESS, None)
else:
return Result(FAIL, None) # 队列pop方法
def pop(self):
if self.queue_len == 0:
return Result(FAIL, None)
elif self.queue_len < 0:
return Result(ERROR, None) self.queue_len -= 1 # 将装有数据的栈拷贝到空栈中
while self.stack_fir.has_next():
pop_result = self.stack_fir.pop()
if pop_result.get_code() == SUCCESS:
self.stack_sec.push(pop_result.get_value()) result = self.stack_sec.pop().get_value() # 将装有数据的栈拷贝到空栈中
while self.stack_sec.has_next():
pop_result = self.stack_sec.pop()
if pop_result.get_code() == SUCCESS:
self.stack_fir.push(pop_result.get_value()) return Result(SUCCESS, result) # 队列是否有下一个元素
def has_next(self):
return self.queue_len > 0 class Stack(object): stack_len = 0
item_list = [] def __init__(self):
self.stack_len = 0
self.item_list = [] # 栈push方法
def push(self, item):
if self.stack_len == MAX_LENGTH:
return Result(FAIL, None)
elif self.stack_len > MAX_LENGTH:
return Result(ERROR, None) self.stack_len += 1
self.item_list.append(item)
return Result(SUCCESS, None) # 栈pop方法
def pop(self):
if self.stack_len == 0:
return Result(FAIL, None)
elif self.stack_len < 0:
return Result(ERROR, None) self.stack_len -= 1
item = self.item_list[self.stack_len]
del self.item_list[self.stack_len]
return Result(SUCCESS, item) # 栈是否有下一个元素
def has_next(self):
return self.stack_len > 0 class Result(object):
code = 0
value = None def __init__(self, code, value):
self.code = code
self.value = value def get_code(self):
return self.code def get_value(self):
return self.value if __name__ == '__main__':
queue = Queue()
queue.push(1)
queue.push(2)
queue.push(5)
queue.push(4)
queue.push(3) while queue.has_next():
print queue.pop().get_value()

  

两个栈实现队列 Python实现的更多相关文章

  1. 用两个栈实现队列(python)

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. # -*- coding:utf-8 -*- class Solution: def __init__( ...

  2. 两个栈实现队列 牛客网 程序员面试金典 C++ Python

    两个栈实现队列 牛客网 程序员面试金典 C++ Python 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. C++ //run:5ms memeory ...

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

    用两个栈实现队列: class QueueWithTwoStacks(object): def __init__(self): self._stack1 = [] self._stack2 = [] ...

  4. 《剑指offer》用两个栈实现队列

    本题来自<剑指offer> 用两个栈实现队列 题目: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 队列定义:先进先出 栈定义:先进后出 要 ...

  5. 剑指Offer面试题:6.用两个栈实现队列

    一.题目:用两个栈实现队列 题目:用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能. 原文是使用 ...

  6. 剑指OFFER之用两个栈实现队列(九度OJ1512)

    题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 输入: 每个输入文件包含一个测试样例.对于每个测试样例,第一行输入一个n(1<=n<=100 ...

  7. 九度OJ 1512 用两个栈实现队列 【数据结构】

    题目地址:http://ac.jobdu.com/problem.php?pid=1512 题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 输入: 每 ...

  8. 两个栈实现队列+两个队列实现栈----java

                                               两个栈实现队列+两个队列实现栈----java 一.两个栈实现一个队列 思路:所有元素进stack1,然后所有出s ...

  9. Algorithm --> 两个栈实现队列和两个队列实现栈

    两个栈实现队列和两个队列实现栈 队列(queue)先进先出的线性表:栈(stack)先进后出的线性表. 两个栈实现队列 法一思路: s1是入栈的,s2是出栈的. 入队列:直接压入s1即可: 出队列:如 ...

随机推荐

  1. MySQL性能优化方法四:SQL优化

    原文链接:http://isky000.com/database/mysql-performance-tuning-sql 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需 ...

  2. linux比较两个文件的差异

    1. vimdiff $ vimdiff in.txt out.txt 垂直打开:  vimdiff   point.c     point-a.c 水平打开:   vimdiff -o  point ...

  3. HDU1702:ACboy needs your help again!

    ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  4. CTF之常见的两种关于word的信息隐藏技术

    一.利用word本身自带的文字隐藏功能 1.在word中输入文字 2.选中文字,单击右键,选择字体选项 3.单击字体选项后,单击隐藏,确定 查找隐藏信息 1.单击左上角WPS文字后,选择选项按钮单击 ...

  5. stardog 基本试用(社区版)

    stardog 是一个知识图谱的实现,实现了sparql 以及graphql 协议,使用起来也比较简单,官方文档挺全 下载 社区版,注册之后会有邮件通知,里面会包含license 以及软件包 下载地址 ...

  6. asp.net excel 操作

    /// <summary> /// 数据操作 /// </summary> /// <param name="fileName"></pa ...

  7. POJ_2299 Ultra-QuickSort【归并排序】

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u013912596/article/details/35655703 题目链接:http://poj ...

  8. 防范SQL注入漏洞攻击

    原理:通过拼sql语句,在输入框里输入' ; SHOW TABLES;注入这样的代码, 防范:你把全部的特殊符号都过滤掉(如单引号,双引号),自然就不会被注入 使用mysql_real_escape_ ...

  9. cookie、session的自我介绍

    Cookie是什么? cookie说的直白点就是保存在用户浏览器端 的一个键值对,举个例子,你现在登录了京东商城,你把浏览器关闭之后,你再打开京东,你还是可以对你的账户继续操作,已经购买的商品,订单都 ...

  10. mibox open ports

    root@dredd:/data/data/berserker.android.apps.sshdroid/home # netstat -lnpActive Internet connections ...