题目一:用两个栈实现队列,队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列的尾部插入节点和在队列的头部删除节点的功能。 template <class T> class CQueue { CQueue(); ~CQueue(); void appendTa ...
分类:
其他好文 时间:
2016-04-18 20:19:10
阅读次数:
228
问题 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路 将入队的元素,加入stack1,如果有出队操作,则将stack1中的元素依次压入stack2,从stack2中弹出元素就等于出队操作,直到从stack2中弹出所有元素,则才又从stack1中加入元素。 ...
分类:
其他好文 时间:
2016-04-17 16:05:29
阅读次数:
166
一个数组实现两个栈栈(stack),是限定在表尾进行插入或删除操作的线性表,对栈来说,表尾端称为栈顶,表头称为栈底。实现栈首先应该对栈中数据元素和栈顶指针的关系有清楚的认识栈顶指针和栈中元素的关系压栈用一个数组实现两个栈,有多种方法,但基本思路就下面三种方法,下..
分类:
编程语言 时间:
2016-04-13 21:08:30
阅读次数:
405
大多数人的思路是:始终维护s1作为存储空间,以s2作为临时缓冲区。 入队时,将元素压入s1。 出队时,将s1的元素逐个“倒入”(弹出并压入)s2,将s2的顶元素弹出作为出队元素,之后再将s2剩下的元素逐个“倒回”s1。 见下面示意图: 上述思路,可行性毋庸置疑。但有一个细节是可以优化一下的。即:在出 ...
分类:
其他好文 时间:
2016-04-13 20:42:32
阅读次数:
125
利用栈的特性,实现队列1.栈-后进先出,队列-先进先出,使用两个栈,栈1作用为push数据用,栈2作为pop数据用。2.原理分析:1).push数据-当模拟实现的queuepush数据往栈1中push。2).pop数据-判断栈2是否为空,如果栈2为空,则首先将栈1的数据压入到栈2中(依次取栈顶元素push到栈..
分类:
其他好文 时间:
2016-04-13 00:35:15
阅读次数:
126
使用两个栈实现一个队列思路一:我们设定s1是入栈的,s2是出栈的。入队列,直接压到s1即可出队列,先把s1中的元素倒入到s2中,弹出s2中的栈顶元素;再把s2的剩余元素全部倒回s1中。
分类:
编程语言 时间:
2016-04-12 16:07:20
阅读次数:
269
利用一个数组实现两个栈是数据结构中的一道经典面试题,那么如何来求解呢?大多数人为了方便都采取了静态实现方式,但是这种方式不能进行扩容,不够完美。博主利用C++尝试了一下动态实现。首先,通过了解栈的特点(后进先出),可以想到如下几个方案:First>>将数组的下..
分类:
编程语言 时间:
2016-04-12 07:45:06
阅读次数:
243
用两个栈模拟队列的思想就是“倒水思想”,这里我们用自定义类型模拟出线性表,再用线性表做容器实现栈的数据结构,最后用栈来实现队列,代码如下:#include<iostream>
#include<string>
#include<cassert>
struct__TrueType//类型萃取
{
boolGet()
{
re..
分类:
其他好文 时间:
2016-04-09 01:49:02
阅读次数:
219