借助Vector实现栈,栈顶是向量末尾,栈底是向量起始:#include "../Vector/Vector.h" //以向量为基类,派生出栈模板类
template class Stack: public Vector { //将向量的首/末端作为栈底/顶
public: //size()、empty()以及其它开放接口,均可直接沿用
void push(T...
分类:
其他好文 时间:
2015-05-29 15:48:14
阅读次数:
124
一、栈的定义
栈(stack)是限定尽在表尾进行插入和删除操作的线性表。
我们把允许插入和删除的一端成为栈顶(top),另一端成为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(LIFO)的线性表。
图示出栈入栈操作:
二、栈的抽象数据类型
图示栈的各项操作:
由于栈本身就是一个线性表,那么上一章我们讨论了线性表的顺序存储和链式存储,对于栈来说也是同...
分类:
其他好文 时间:
2015-05-29 12:02:15
阅读次数:
172
程序计数器、JVM栈、本地方法栈这三个内存区域和线程是一一对应的,并且每一个线程的这三个区域相互独立互不干扰。他们都随着线程的产生而产生,线程的灭亡而灭亡。JVM栈和本地方法栈中的栈帧都随着方法的加载而入栈,随着方法的结束而出栈。栈帧的大小是在程序员写类的时候就确定下来的。因此这三种区域的内存大小都具备确定性,当方法结束或线程结束后,这些内存空间就会自动被回收掉,所以JVM无需考虑这些区域的内存回收...
分类:
其他好文 时间:
2015-05-29 10:11:00
阅读次数:
116
//用数组写出栈(先进后出)
import java.util.Collection; import java.util.NoSuchElementException; public class ArrayStack { private int initalSize = 5; private Object[] stack; private int head; private int tai...
分类:
编程语言 时间:
2015-05-28 21:38:59
阅读次数:
162
【要求】用两个队列queue1,queue2来实现栈的压栈和出栈功能。【分析】此问题类似于用两个栈实现队列的功能的思路,将队列queue1作为入栈专职,queue2作为中转,主要思路是,压栈时将所有元素全部进队queue1,出栈时由于要将queue1最后一个进来的元素输出,所以先将queue1除最后一个元素以外的所有元素转到queue2,出队输出最后一个元素后,将queue2所有元素出队,重新入队到...
分类:
其他好文 时间:
2015-05-27 19:05:45
阅读次数:
129
java堆用于存放对象示例,与数据相关,java栈主要与线程的函数调用相关
函数调用一次出入java栈一次,调用的时候入栈,调用结束(return或者throw)出栈,函数参数和函数局部 变量保存在栈帧中,所以函数调用结束之后栈帧被弹出,相应的局部变量也就失效了。
函数参数和局部变量越多,需要栈帧中保存的局部变量表就越大,函数调用的层次就会越少。
局部变量是垃圾回收的很重要的根节点,任何被局部变量...
分类:
编程语言 时间:
2015-05-27 14:05:49
阅读次数:
184
【题目】用两个栈实现一个队列,分别完成在队列尾部插入结点和在队列头部删除结点的功能。【分析】假设两个栈,栈1和栈2,来实现队列,栈1用来入队,栈2用来出队。
入队时,将元素全部压入栈1;
出队时,如果栈2不为空,就直接pop栈2,否则,就将栈1的所有元素pop到栈1里,再把栈2栈顶弹出。
由图所示,abcdef依次入队,压栈,出队时先将元素从s1弹出,压入s2,从s2出栈实现出队,即使后面再有...
分类:
其他好文 时间:
2015-05-27 10:23:41
阅读次数:
166
前言:中缀表达式符合人们的阅读习惯; 如:5+3
后缀表达式符合计算机的运算习惯;如:53+
现在通过栈对运算符号的入栈、出栈操作实现将中缀表达式转化成后缀表达式
1、LinkList.h
#ifndef _LINKLIST_H_
#define _LINKLIST_H_
typedef void LinkList;
typedef s...
分类:
其他好文 时间:
2015-05-26 21:35:12
阅读次数:
116
//一个长度为n的序列,对于一个区间中的value为这个区间的最小值乘上这个区间的所有数的和
//这就是找每一个点,找以其为最小值的区间
//显然直接暴力法找必然超时
//可以开一个单调递增栈,对于每一个新元素a[i]
//当前值小于等于栈顶元素,表示以栈顶元素为最小值的区间的右端是i
//栈顶元素a[j]出栈 , 由于是单调递增栈,新的栈顶元素a[k]必然小于a[j],故需要更新新的栈...
分类:
其他好文 时间:
2015-05-26 21:22:24
阅读次数:
134
1、Java中内存的基本结构:栈(stack):存放局部变量、对象的引用;堆(heap):new出来的东西(对象)方法区:常量池等静态域:全局变量等变量在其生命周期结束后将出栈,此时堆中的空间因为没有栈中的变量来引用它将被系统回收2、Java中关于变量的类型:1)按照数据类型的不同:基本数据类型 &...
分类:
编程语言 时间:
2015-05-26 20:57:33
阅读次数:
183