#include<iostream>usingnamespacestd;#pragmaonce/*1.判断栈是否为空2.得到栈的长度3.元素入栈4.元素出栈5.清空栈6.栈顶元素7.栈底元素*/template<typenameT>classMyStack{public:MyStack(void);~MyStack(void);voidpush(Telem);voidpop(T&elem);voidclearSta..
分类:
编程语言 时间:
2016-04-25 19:48:10
阅读次数:
180
题目:给定一个入栈和一个出栈序列?请判断是否合法eg:入栈12345,出栈35124用一个辅助栈,如果栈为空,就push(入栈序列)比较栈顶元素和出栈序列当前值是否相等,若相等,出栈此元素,并将下次访问出栈序列位置后移;否则,继续入入栈序列里的元素。重复1,2步骤,直到入栈序..
分类:
其他好文 时间:
2016-04-25 19:44:25
阅读次数:
165
1.//使用两个队列实现一个栈,优化版(1.入栈只如q1,出栈将q1数据倒q2,删掉刚进来的,
//若q1无数据,从q2倒,删q2中最后一个数据2.只保证一个栈中有数据,简单,易理解)
//第一种实现template<classT>
classStack
{
public:
boolEmpty()
{
return_q1.empty()&&a..
分类:
其他好文 时间:
2016-04-25 19:43:05
阅读次数:
192
栈和队列是特殊的线性表。 栈:只允许数据在一个端进行增加和删除操作,存在先进先出的原则。 插入元素为进栈,从栈顶删除元素为出栈。栈最底部元素为栈顶元素,栈顶部元素为栈顶元素。 栈只允许在栈顶进行增加和删除元素的操作。 先入栈的元素位于栈底,后入位于栈顶。 可以采用数组的形式来实现栈。栈是受限制的线性 ...
分类:
其他好文 时间:
2016-04-25 00:56:44
阅读次数:
145
二叉树的遍历可以使用递归的方式实现,并且代码非常简单。而递归实际就是函数反复的调用本身,在栈上反复压栈。所以我们可以用栈来模拟实现递归。1.前序遍历(1)栈是后进先出的特点,所以无条件的把栈的根节点入栈,在把栈顶元素输出之后依次把右孩子,左孩子压入栈中。代码如..
分类:
其他好文 时间:
2016-04-23 23:13:24
阅读次数:
198
有两种常用的方法可用来搜索图:即深度优先搜索和广度优先搜索。它们最终都会到达所有连通的顶点。深度优先搜索通过栈来实现,而广度优先搜索通过队列来实现。 深度优先搜索: 为了实现深度优先搜索,首先选择一个起始顶点并需要遵守三个规则:(1) 如果可能,访问一个邻接的未访问顶点,标记它,并把它放入栈中。(2 ...
分类:
其他好文 时间:
2016-04-21 11:34:57
阅读次数:
140
来自:http://blog.163.com/liuguang_123/blog/static/816701920105262543890/ 理解调用栈最重要的两点是:栈的结构,EBP寄存器的作用。首先要认识到这样两个事实:1、一个函数调用动作可分解为:零到多个PUSH指令(用于参数入栈),一个CA ...
栈的定义栈是一种只能在一端进行插入或删除操作的线性表。表中允许进行插入、删除操作的一端称为栈顶。栈顶的当前位置是动态的,由栈顶指针来指示。表的另一端称为栈底。当栈中没有数据元素时,称为空栈。栈的插入操作通常称为进栈或入栈,栈的删除操作通常称为退栈或出栈。栈..
分类:
其他好文 时间:
2016-04-20 02:09:31
阅读次数:
172
参考《大话数据结构》P98~99——栈的链式存储结构。 进栈: 出栈: 举个简单的例子: 代码和解释如下(VS2012测试通过): 运行结果: 对比顺序栈和链栈: 时间上: 它们入栈和出栈在时间复杂度上是一样的,均是O(1)。 空间上: 顺序栈需要实现确定一个固定的长度,可能会存在内存空间浪费的问题 ...
分类:
其他好文 时间:
2016-04-18 23:57:39
阅读次数:
338