题目:用两个队列实现栈。思路:可能看了我的《用两个栈实现队列》的那篇文章后,很多人都会想到“反向的反向等于正向”的思想,但“正向的正向还是正向”,因此我们不能用上篇文章的思想。在这里,我们要开动脑筋,另辟蹊径。设有两个队列q1和q2,我们把它看成一个整体,即从..
分类:
其他好文 时间:
2014-09-25 17:27:30
阅读次数:
162
题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数,appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。思路:首先要明确的是,看到这道题目,我们最先应该想到的是用C++来实现之。为什么?因为看到栈和队列,如果用C来实现的话..
分类:
其他好文 时间:
2014-09-25 16:55:49
阅读次数:
175
一个笔试题,当时竟然没想出来,现在实现下 1 /* 2 用两个栈实现双端队列 3 栈s1,s2。 4 pushback()和popback(),必须在s2为空的情况,把s2的都放s1中 5 pushfront()和popfront(),必须是在s1为空,把s1的都给放到s2中 6 */ ...
分类:
其他好文 时间:
2014-09-22 02:10:31
阅读次数:
243
用两个栈实现队列的效果,可以入栈,出栈,判空等。。。
实现的栈基本功能
lstack.h
#ifndef _LSTACK_H
#define _LSTACK_H
#include
using namespace std;
// 基于链式表的堆栈
class Stack {
public:
// 构造过程中初始化为空堆栈
Stack (void) : m_top (NULL) {}
/...
分类:
其他好文 时间:
2014-09-15 22:56:39
阅读次数:
481
需求 编程实现计算器,当输入一个表达式时,可以得出计算结果。(实现加、减、乘、除、取余以及负号运算) 思路 1. 维护两个栈,一个栈my_dig用于push数字,另一个栈my_op用于push运算符。栈中元素结构如下: typedef struct tag_stack1
{ int dig_arr[...
分类:
其他好文 时间:
2014-09-11 15:18:52
阅读次数:
240
1 /* 2 * 实现一个队列类,该类用两个栈来实现 3 * 队列和栈的主要区别是,队列是先进先出,就像我们在食堂[派对打饭一样,先到先打 4 * 栈是先进后出,就像枪里面的子弹,最先进去的把压到了最低 5 * 因此我们只要修改一下peek()和pop(),以相反顺序执行操作,我们可以利用...
分类:
其他好文 时间:
2014-09-06 12:25:23
阅读次数:
142
校招开始了,发现自己数据结构,Algorithms的知识都还给老师了。喵了个呜的!《算法导论》开啃吧~从第三章数据结构开始吧~10.1-2 :如何用一个数组A[1...n]来实现两个栈,使得两个栈中的元素总数不到n时,两者都不会发生上溢。注意PUSH和POP操作的时间应为O(1)。解:思想是,建一维...
分类:
其他好文 时间:
2014-09-01 12:28:43
阅读次数:
187
使用两个栈实现一个队列
队列是先进先出的数据结构(FIFO),栈是先进后出的数据结构(FILO),
用两个栈来实现队列的最简单方式是:进入队列则往第一个栈压栈,
出队列则将第一个栈的数据依次压入第二个栈,然后出栈.
两条规则:
1)进队列,则直接压入第一个栈
2)出队列,若果第二个栈不为空,直接pop(),如过第二个栈为空,
则把第一个栈中的数据全部压入第二个栈(第一个栈此时为空...
分类:
其他好文 时间:
2014-08-27 01:40:37
阅读次数:
230
为实现O(1)的时间复杂度完成取队列中最大元素,使用maxStackItemIndex记录队列(使用两个栈实现)中最大元素下标,使用数组link2NextMaxItem[]记录数组中次大值的下标,这也就是使用两个栈(先进后出)模拟队列二不是直接使用队列(先进先出)的原因:先进后出可以保证当执行p.....
分类:
其他好文 时间:
2014-08-23 13:57:40
阅读次数:
205