代码改变世界

算法——栈和队列(3.7%,1.2%)

2012-12-18 15:13  msfte  阅读(216)  评论(0编辑  收藏  举报

 1,设计包含min函数的栈(栈)

2, 栈的pushpop序列(栈)

题目:输入两个整数序列。其中一个序列表示栈的

push顺序,

判断另一个序列有没有可能是对应的

pop顺序。

为了简单起见,我们假设

push序列的任意两个整数都是不相等的。

比如输入的

push序列是12345,那么45321就有可能是一个pop系列。

因为可以有如下的

pushpop序列:

push 1

 

push 2push 3push 4poppush 5poppoppoppop

 

这样得到的

 

pop序列就是45321

 

但序列

43512就不可能是push序列12345pop序列。

3, 实现一个队列。

 

队列的应用场景为:

 

一个生产者线程将

int类型的数入列,一个消费者线程将int类型的数出列

4, 设计一个栈结构,满足一下条件:

minpushpop操作的时间复杂度为O(1)

5, 用俩个栈实现队列(栈、队列)。

6, 颠倒栈(栈)。

题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5}1在栈顶。

颠倒之后的栈为{5, 4, 3, 2, 1}5处在栈顶。

 7,时间复杂度为O(1),怎么找出一个栈里的最大元素   

8,12345入栈,出栈结果 21543 31245 43215 12534 可能的为?

9,1,2,3,4…..n,n个数进栈,有多少种出栈顺序,写出递推公式

10,双向链表模拟队列操作push pop find

11,.N个数,出栈有几种情况 

12,定义一个栈的数据结构,实现min函数,要求push,pop,min时间复杂度是0(1);