顺序栈——双栈(Dual Stack)
1. 双栈的概念
1.1 双栈的定义
双栈是指两个顺序栈,是一种特殊的顺序栈。
1.2 双栈中各元素的逻辑及存储关系
双栈共享一个地址连续的存储单元。即程序同时需要两个栈时,可以定义一个足够的栈空间,该空间的两端分别设为两个栈的栈底,用bottom[0]=-1和bottom[1]=maxSize指示。
压入数据时,让两个栈的栈顶top[0]和top[1]都向中间伸展,如...
分类:
其他好文 时间:
2016-05-14 06:50:23
阅读次数:
372
1>//栈是先进后出,后进先出的线性表 简称LIFO线性表
//栈的顺序存储结构成为顺序栈(sequebtial stack).
//顺序栈利用一组地址连的存储单元依次存放从栈底到 栈顶的数据元素,通常用一维数组存放栈的元素
//”指针”top并非指针,而是表示栈顶元素的当前位置
//top不是指针型变量而是整形变量,top=0空栈,top=MaxSize 表示满栈,当top>ma...
分类:
其他好文 时间:
2016-05-12 19:02:20
阅读次数:
256
顺序栈:利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时由于栈操作的特殊性,还必须附设一个位置指针top(栈顶指针)来动态地指示栈顶元素在顺序栈中的位置。通常以top=-1表示空栈。代码如下:#include<iostream>usingnamespacestd;#defineTRUE1#defin..
分类:
其他好文 时间:
2016-05-09 07:18:44
阅读次数:
148
栈的应用非常广泛,经常会出现一个程序中需要同时使用多个栈的情况。若使用顺序栈,会因为对栈空间大小难以准确估计,从而产生有的栈溢出、有的栈空间还很空闲的情况。为了解决这个问题,可以让多个栈共享一个足够大的数组空间,通过利用栈的动态特性来使其存储空间互相补充,..
分类:
其他好文 时间:
2016-05-09 07:18:08
阅读次数:
250
1. 栈 1.1 分类 顺序栈:顺序线性表实现 链式栈:单向链表存储堆栈 1.2栈的应用 1)数制转换 import java.util.Scanner; import java.util.Stack; public class Tran{ public static void main(Strin ...
分类:
编程语言 时间:
2016-04-21 18:31:16
阅读次数:
251
基于顺序表的堆栈
基于链式表的堆栈
1 基于顺序表的堆栈
栈是一种特殊的线性表,是限定在线性表表尾进行插入删除操作的线性表。由栈的概念衍生出几个子概念,它们是:
1)栈顶,即允许进行插入、删除操作的一端,又称为表尾,用栈顶指针(top)来指示栈顶元素。
2)栈底,即固定端,又称为表头
3)空栈,即栈当中没有数据元素。
顺序栈是采用顺序存储结构的栈,...
分类:
编程语言 时间:
2016-04-21 11:51:41
阅读次数:
251
本例主要是实现一个顺序栈;其它的啥也不说;直接上代码: /*或许这就是指针的魅力;也是指针折磨人的地方。指针可以直接对内存进行操作,非常强大;它操作的对象是地址;是计算机最本质的东西;你在操作的时候是比较爽了;但是当你在程序中“不小心”改变了指针变量的值;当你再次访问时;就会出现一些莫名其妙的错误( ...
分类:
其他好文 时间:
2016-04-20 19:54:04
阅读次数:
206
这篇随笔是我在学数据结构时的整体规划,弄清学习路线,也方便查看。 1、线性表 顺序表(数组实现) 链表 2、栈 顺序栈(数组实现) 链式栈 3、队列 循环队列(数组实现) 链式队列 4、串 5、树 6、图 7、排序 ...
分类:
其他好文 时间:
2016-04-19 16:54:46
阅读次数:
165
这两天完成了栈的顺序存储结构的相关算法,包括初始化、压栈、出栈、取栈顶元素、判断栈是否为空、返回栈长度、栈的遍历、清栈、销毁栈。这次的实现过程有两点收获,总结如下: 一、清楚遍历栈的概念 栈的遍历指的是从栈底想栈顶方向运行visit()函数,这是之前的学习中所忽略的;栈的遍历解除了栈的输出顺序只能从 ...
分类:
编程语言 时间:
2016-04-19 00:14:58
阅读次数:
256
参考《大话数据结构》P98~99——栈的链式存储结构。 进栈: 出栈: 举个简单的例子: 代码和解释如下(VS2012测试通过): 运行结果: 对比顺序栈和链栈: 时间上: 它们入栈和出栈在时间复杂度上是一样的,均是O(1)。 空间上: 顺序栈需要实现确定一个固定的长度,可能会存在内存空间浪费的问题 ...
分类:
其他好文 时间:
2016-04-18 23:57:39
阅读次数:
338