`
bliuqing
  • 浏览: 65102 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

用两个栈实现一个队列的功能

阅读更多
【转】http://hi.baidu.com/liangjw821/blog/item/74c98ed520f299cc51da4b86.html
原题:

用两个栈实现一个队列的功能?

思路:

假设两个栈 A 和B,且都为空。
可以认为栈 A 为提供入队列的功能,栈 B 提供出队列的功能。
入队列: 入栈 A
出队列:
1 如果栈B 不为空,直接弹出栈 B 的数据。
2 如果栈 B 为空
2.1 若A不为空,则依次弹出栈 A 的数据,放入栈 B 中,再弹出栈 B 的数据。
2.1 若A为空,则队列为空。
int enqueue(stack s1,elemtp x)
{
    PUSH(s1,x);
    return(1);
}

ElementType  dequeue(stack s2,stack s1)
{
    if(!empty(s2))//s2 is not empty
    {
         return POP(s2);
    }
    else
    {
     if(empty(s1)
     {    printf("队列为空"); exit(0);
     }
      else
       {
             while(!empty(s1)
             {
                 ElementType t;
                 POP(s1,t);
                 push(s2,t); 
             }  
             return pop(s2);
       }
    }
}
分享到:
评论

相关推荐

    用两个栈实现一个队列的功能?要求给出算法和思路

    用两个栈实现一个队列的功能?要求给出算法和思路

    C语言用两个栈实现一个队列的功能

    用量个栈实现一个队列,使其可以有进队和出队的操作。

    C/C++之用两个栈实现一个队列的功能

    问题:有两个栈s1和s2,实现队列的push和pop功能。  一般思路:始终维护s1作为存储空间,并以s2作为临时缓冲区。s1实现入队操作,s2实现出队操作。  1,入队时,将元素压入s1。  2,出队时,将s1的元素逐个...

    剑指offer刷题记录之用两个栈实现队列

    要求用两个栈{stack1,stack2}实现一个队列,也就是说我们需要使用栈的push和pop功能来构造队列的push和pop功能。 栈我们用列表表示,相应的功能使用append和pop函数实现。 队列的push功能: 使用stack1来存储元素,...

    PHP使用两个栈实现队列功能的方法

    本文实例讲述了PHP使用两个栈实现队列功能的方法。分享给大家供大家参考,具体如下: 问题 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解决思路 两个栈。出栈的时候,如果栈2不为...

    用两个栈实现队列1

    队列的声明如下,请实现它的两个函数 appendTail 和deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元示例:

    数据结构-用双端队列实现栈

    用双端队列(deque)实现栈的功能, 数据结构作业 栈(先进后出)的一种数据结构 内含一个cpp文件和两个头文件。

    (剑指offer)面试题09. 用两个栈实现队列

    用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 思路 根据栈的特性...

    栈、队列实现魔王语言转换(编程实例)

    有一个魔王总是使用自己的一种非常精练面抽象的语言讲话,没有人能听得慌,... 设计一个魔王语言转换系统,利用栈、队列实现相应的语言转换功能,程序可实现相应效果,同时可以进一步学习数据结构中的栈和队列操作过程。

    Python《剑指offer》算法实现-用两个栈实现队列

    # Python实现《剑指offer》 部分代码自己添加了一些测试用例, 或者自己添加了一些功能 1. 初级程序员注重算法和数据结构 2. 事先做好准备,对工作有热情 3. 面试过程放松。不要急于写代码,了解清楚所要解决的问题,...

    Python《剑指offer》算法实现-用两个队列实现栈

    # Python实现《剑指offer》 部分代码自己添加了一些测试用例, 或者自己添加了一些功能 1. 初级程序员注重算法和数据结构 2. 事先做好准备,对工作有热情 3. 面试过程放松。不要急于写代码,了解清楚所要解决的问题,...

    数据结构和算法必知必会的50个代码实现

    ## 栈* 用数组实现一个顺序栈* 用链表实现一个链式栈* 编程模拟实现一个浏览器的前进、后退功能 ## 队列* 用数组实现一个顺序队列* 用链表实现一个链式队列* 实现一个循环队列 ## 递归* 编程实现斐波那契数列求值f(n...

    c++数据结构-实验.zip

    2)设计一个线性表,分别用顺序存储结构和链式存储结构实现,完成线性表的构造、查找、插入、删除、输出等基本操作。 3)掌握两种存储结构的优缺点以及在实际应用中如何选择存储方式。 4)选作:约瑟夫环的顺序存储...

    PHP基于数组实现的堆栈和队列功能示例

    本文实例讲述了PHP基于数组实现的堆栈和队列功能。分享给大家供大家参考,具体如下: 堆栈和队列是数据结构的两种实现形式,是使用非常广泛的存储数据的容器。下面呢,就分别讲下这两种容器在PHP中的应用: 一、使用...

    停车场管理系统的设计与实现

    这是一个基于C/C++的停车场管理系统,主要包括 ...停车场分为左右两侧共10个车位,这两侧分别用两个栈来表示,如果这10个车位全停满,后来的汽车进入便道等待,如果停车场内有车离开,便道上的第一辆车进入该车位。

    数据结构课程设计 四题

     (1) 两个栈共享空间,思考应开辟数组的空间是多少?  (2) 汽车可有不同种类,则它们的占地面积不同,收费标准也不同,如1辆客车和1.5辆小汽车的占地面积相同,1辆十轮卡车占地面积相当于3辆小汽车的占地面积...

    lwip轻量级协议栈源码,已移植成功

    lwip是瑞士计算机科学院的一个开源的TCP/IP协议栈实现.  lwIP是TCP/IP协议栈的一个实现。lwIP协议栈主要关注的是怎么样减少内存的使用和代码的大小,这样就可以让lwIP适用于资源有限的小型平台例如嵌入式系统。为了...

    Java语言要注意的问题及其实用案例分析,直接拿走吧

    队列和栈:编写一个程序,实现队列和栈的数据结构,支持添加、删除、查找等操作。 图书馆管理系统:编写一个程序,实现图书馆的图书借阅、归还、查询等功能,涉及到数据库的操作。 生日提醒程序:编写一个程序,...

Global site tag (gtag.js) - Google Analytics