栈
文章平均质量分 78
tanyujing
这个作者很懒,什么都没留下…
展开
-
用两个栈实现队列
题目:某队列的声明如下:templatetypename T>class CQueue{public: CQueue() {}~CQueue() {} void appendTail(const T& node); // append a element to tail void deleteHead();原创 2013-01-17 11:22:30 · 978 阅读 · 0 评论 -
设计包含min函数的栈[数据结构]
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。分析:这是去年google的一道面试题。我看到这道题目时,第一反应就是每次push一个新元素时,将栈里所有逆序元素排序。这样栈顶元素将是最小元素。但由于不能保证最后push进栈的元素最先出栈,这种思路设计的数据结构已经不是一个栈了。在栈里添加一个成员变量存放原创 2013-01-02 20:23:16 · 586 阅读 · 0 评论 -
设计包含max函数的队列
问题:假设有这样一个拥有3个操作的队列:1.EnQueue(v)看,将v加入队列中2.DeQueue:使队列中的队首元素删除并返回此元素3.MaxElement:返回队列中的最大元素设计一种数据结构和算法,让MaxElement操作的时间复杂度尽可能的降低。分析与解法:先实现一个带有max函数的栈,然后用两个栈实现一个队列import java.util.Linke原创 2013-03-20 11:22:58 · 1696 阅读 · 0 评论 -
栈的push,pop序列
题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列:push 1,push 2,push 3,push 4,pop,push 5,pop,pop,原创 2013-04-10 14:57:17 · 6437 阅读 · 0 评论