文章 2015-07-20 来自:开发者社区

[剑指Offer]9.用两个栈实现队列

题目 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路 用栈来模拟队列。我们首先插入一个元素a到stack1中,再压入两个元素bc,此时栈中有元素abc,其中c位于栈顶,而stack2仍然为空。我们试着删除一个元素。按照队列先进先出的原则,我们应该先删除元素a。元素a存放在stack1中且不在栈顶,因此不能直接删除。注意到stack2还未使用,我们...

文章 2015-06-28 来自:开发者社区

[LintCode] 用栈实现队列

1 class Queue { 2 public: 3 stack<int> stack1; 4 stack<int> stack2; 5 6 Queue() { 7 // do intialization if necessary 8 } 9 10 void push(int element) ...

Go语言核心编程 - 数据结构和算法

47 课时 |
1800 人已学 |
免费
开发者课程背景图
文章 2015-06-20 来自:开发者社区

一张图体会栈和队列

版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/nomasp/article/details/80120274 欢迎访问我的博客咯:http://blog.csdn.net/NoMasp

文章 2015-04-12 来自:开发者社区

用栈和队列实现虚拟停车场系统

学校的数据结构课程实验之一。 用到的数据结构:栈、队列 需求分析   设停车场内只有一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序依次排列。   若车场内已停满n辆汽车,则后来的汽车只能在门外便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为它让路,该车开出后,其它车辆再按原次序....

文章 2014-12-04 来自:开发者社区

careercup-栈与队列 3.6

3.6 编写程序,按升序对栈进行排序(即最大元素位于栈顶)。最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中(如数组)。该栈支持如下操作:push、pop、peek和isEmpty。   解答   使用一个附加的栈来模拟插入排序。将原栈中的数据依次出栈与附加栈中的栈顶元素比较, 如果附加栈为空,则直接将数据压栈。否则, 如果附加栈的栈顶元素小于从原栈中弹出...

文章 2014-12-04 来自:开发者社区

careercup-栈与队列 3.5

3.5 实现一个MyQueue类,该类用两个栈来实现一个队列。 解答 队列是先进先出的数据结构(FIFO),栈是先进后出的数据结构(FILO), 用两个栈来实现队列的最简单方式是:进入队列则往第一个栈压栈, 出队列如果第二个栈不为空,则直接从第二个栈出队列,否则将第一个栈的数据依次压入第二个栈,然后出栈。每次有数据进入队列,直接进入第一个栈; 每次有数据出队列,在第二个栈不为空时直接从第二个栈出....

文章 2014-12-04 来自:开发者社区

careercup-栈与队列 3.4

3.4 在经典问题汉诺塔中,有3根柱子及N个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自底向上从大到小依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时有以下限制: 每次只能移动一个盘子; 盘子只能从柱子顶端滑出移到下一根柱子; 盘子只能叠在比它大的盘子上。 请运用栈,编写程序将所有盘子从第一根柱子移到最后一根柱子上。 使用递归的方法实现如下: #inc.....

文章 2014-12-04 来自:开发者社区

careercup-栈与队列 3.3

3.3 栈就像叠盘子,当盘子叠得太高时,就会倾斜倒下。因此,在真实的世界中,当一叠盘子 (栈)超过了一定的高度时,我们就会另起一堆,再从头叠起。实现数据结构SetOfStacks 来模拟这种情况。SetOfStacks由几个栈组成,当前一栈超出容量时,需要创建一个新的栈 来存放数据。SetOfStacks.push()和SetOfStacks.pop()的行为应当和只有一个栈时 表现的一...

文章 2014-12-04 来自:开发者社区

careercup-栈与队列 3.2

3.2 请设计一个栈,除pop与push方法,还支持min方法,可返回栈元素中的最小值。push、pop和min三个方法的时间复杂度必须为O(1)。 我们假设除了用一个栈s1来保存数据,还用另一个栈s2来保存这些非冗余最小值。那么, 当我们将数据压到要s1时,同时将它和s2的栈顶元素比较,如果不大于s2的栈顶元素, 那么将当前值也压入s2中。这样一来,s2中保存的就是一个阶段性最小值。 即s2中....

文章 2014-12-04 来自:开发者社区

careercup-栈与队列 3.1

3.1 描述如何只用一个数组来实现三个栈。 解答 我们可以很容易地用一个数组来实现一个栈,压栈就往数组里插入值,栈顶指针加1; 出栈就直接将栈顶指针减1;取栈顶值就把栈顶指针指向的单元的值返回; 判断是否为空就直接看栈顶指针是否为-1。 如果要在一个数组里实现3个栈,可以将该数组分为3个部分。如果我们并不知道哪个栈将装 入更多的数据,就直接将这个数组平均分为3个部分,每个部分维护一个栈顶指针, ....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

算法编程

开发者社区在线编程频道官方技术圈。包含算法资源更新,周赛动态,每日一题互动。

+关注