栈
jiyanfeng1
喜欢算法和编程的工科男
展开
-
栈的push、pop序列
栈的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,...原创 2012-10-01 12:11:49 · 1403 阅读 · 0 评论 -
用堆栈模拟队列,和用队列模拟堆栈
两个堆栈模拟队列: 堆栈a和b,a用作入队,b出队 (1)判队满:如果a满且b不为空,则队满 (2)判队空:如果a和b都为空,则队空 (3)入队:首先判队满。 若队不满:(1)栈a若不满,则直接压入栈a (2)若a满,则将a中的所有元素弹出到栈b中,然后再将元素入栈a (4)出队:(1)若b空就将a中原创 2012-09-23 13:06:34 · 2575 阅读 · 0 评论 -
括号匹配(小中大括号序列)
括号序列由( )[ ]{ }组成,不合法的括号序列由( { ) },[ } { ],等等。编程实现一个函数,检查一个括号序列是否是合法的括号序列。 解法: 思路和“后缀表达式的求解”相似。我们借助栈,每读一个括号,如果是左括号,那么入栈,然后继续读下一个括号;如果是右括号,那么就要看看这个右括号和站定的括号是否匹配;如果匹配,那么弹出栈顶的括号,继续读下一个括号。当栈变空时,说明此括号序列是合原创 2012-10-18 02:49:00 · 4164 阅读 · 0 评论 -
一个栈,只提供push,pop,top,empty四种操作(这四种操作就是C++标准里的操作),对该栈的元素进行排序。
#include #include #include using namespace std; stack sort_stack( stack st ) { stack st1; while(!st.empty()) { int temp = st.top(); st.pop(); while(!st1.empty() && temp>st1.top()) { st原创 2013-01-16 09:15:11 · 2872 阅读 · 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,p原创 2013-02-27 14:11:43 · 677 阅读 · 0 评论 -
螺旋遍历二叉树 Spiral-order traversal
螺旋遍历二叉树指的是,先从左往右层序打印第一层,然后从右往左层序打印第二层,再从左往右层序打印第三层,再从右往左层序打印第四层,。。。 思路:可以用两个栈来做。 struct Node{ int data; Node* left; Node* right; Node(int d, Node*l, Node*r):data(d), left(l), right(r){} }; void原创 2013-02-27 09:08:06 · 1350 阅读 · 0 评论 -
[LeetCode] Online Stock Span Problem
The Online Stock Span Problem The stock span problemis a financial problem where we have a series of n daily price quotes for a stock and we need to calculate span of stock’s price for all n days. ...原创 2014-11-18 06:11:33 · 1023 阅读 · 0 评论 -
非递归前序遍历二叉树
非递归后序遍历二叉树,请看这里。 方法一:递归调用用的是call stack,为了把递归调用转化成非递归调用,我们要想办法用普通的栈代替call stack。 教科书里的非递归前序遍历算法,需要用两个嵌套循环来做。本算法的仅仅需要一个循环就能完成前序遍历。详见preorder1() 初始化: 首先把根节点入栈。 循环以下各步,直至栈为空: 1.出栈;(出栈的时候,打原创 2012-10-04 00:44:12 · 1163 阅读 · 0 评论 -
[LeetCode] Binary Tree Zigzag Level Order Traversal
Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between). For example: Given binary原创 2014-12-06 05:01:18 · 566 阅读 · 0 评论