1:Stack特点

stack:栈,是一种特殊的数据结构,有着先入后出的特点(first in last out)。stack中栈底始终不变,只有一端能变化。栈顶在有数据push的时候增大,有数据pop的时候减小!相比于队列Queue而言,队列是先进先出(first in first out),队列有数据进来时,写指针增加,而有数据读出时,读指针增大,两个指针都是可变的!

2:应用场景

子程序的调用,递归程序的调用以及中缀表达式的实现

3:代码实现

下面更过上面的分析,基于数组来实现stack的pop,push的功能

//使用数组来构建stack
class stackInArray{ private Object[] array;//数组
private int stackBottom ;//stack的底部指向array的地步array[0]
private int stackTop ;//stack的底部指向array的地步array[0] public stackInArray(Object[] o ){
this.array = o;//指向构造的数组当作stakc的内存
this.stackBottom = ;
this.stackTop = ;
} //出栈
public Object stackPop() {
Object o = null;
if(stackTop == ) {
System.out.println("内存已空,无法出数据");
}
else {
stackTop--;
o = array[stackTop];
}
return o;
} //进栈
public void stackPush(Object o) {
if(stackTop == array.length) {
System.out.println("内存已满,无法存入");
return ;
}
else {
array[stackTop] = o;
stackTop++;
}
}
}

用数组来实现Stack的更多相关文章

  1. 数据结构:二级指针与Stack的数组实现

    [简介] Stack,栈结构,即传统的LIFO,后进先出,常用的实现方法有数组法和链表法两种.如果看过我上一篇文章<数据结构:二级指针与不含表头的单链表>,一定会看到其中的关键在于,利用v ...

  2. php 常用数组操作

    php常用的数组操作函数,包括数组的赋值.拆分.合并.计算.添加.删除.查询.判断.排序等 array_combine 功能:用一个数组的值作为新数组的键名,另一个数组的值作为新数组的值 <?p ...

  3. Java集合之Stack 源码分析

    1.简介 栈是数据结构中一种很重要的数据结构类型,因为栈的后进先出功能是实际的开发中有很多的应用场景.Java API中提供了栈(Stacck)的实现,简单使用如下所示 package com.tes ...

  4. 04--STL序列容器(Stack和Queue)

    总括: stack和queue不支持迭代 一:栈Stack (一)栈的简介 stack是堆栈容器,是一种“先进后出”的容器. stack是简单地装饰deque容器而成为另外的一种容器. (二)栈的默认 ...

  5. php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】

    本文实例总结了php常用数组array函数.分享给大家供大家参考,具体如下: array_combine 功能:用一个数组的值作为新数组的键名,另一个数组的值作为新数组的值 案例: <?php ...

  6. Numpy中stack(),hstack(),vstack()函数详解

    一`.stack 按指定维度堆叠数组.      stack(a, b) 维度计算 axis=0: 2*m*n axis=1:  m*2*n axis=-1: m*n*2 a = np.arange( ...

  7. Java集合 之List(ArrayList、LinkedList、Vector、Stack)理解(new)

    一. ArrayList底层实现原理 对比 和Vector不同,ArrayList中的操作不是线程安全的!所以,建议在单线程中才使用ArrayList,而在多线程中可以选择Vector或者CopyOn ...

  8. JS对象和数组

    /* 数组和对象 [JavaScript 权威指南 第五版] */ /* 对象: 是一个无序属性集合, 每个属性都有自己的名字和值 */ /* 创建对象简单方法, 对象直接量 */ var obj = ...

  9. 请使劲回答一个关于UNIX/Linux自己主动扩展stack的问题

    有本事就出来,没本事就当鳖! 假设让我回答关于进程栈,线程栈的问题,仅仅要问题不笼统,仅仅要问题明白.我会一五一十地回答,正确率上九成,然而,可悲的是,问题往往他妈的都不是非常明白,因此,游戏到此结束 ...

随机推荐

  1. VUE- Cordova打包APP

    VUE- Cordova打包APP 现在使用vue开发的项目越来越多,使用vue开发的移动端打包就成了最大的问题.现在前端打包方案有好多种,但是综合来说,我比较喜欢用cordova来进行Android ...

  2. 设置进程用指定IE版本

    function IsWOW64: BOOL; begin Result := False; if GetProcAddress(GetModuleHandle(kernel32), 'IsWow64 ...

  3. scala 语言特性

    Scala 语言特性 Unit 表示无值, 等价于java, C++中的void Null 表示空值或空引用 Nothing 所有其他类型的子类型, 表示没有值 Any 所有类型的超类, 任何实例都属 ...

  4. Elasticsearch 搜索数据

    章节 Elasticsearch 基本概念 Elasticsearch 安装 Elasticsearch 使用集群 Elasticsearch 健康检查 Elasticsearch 列出索引 Elas ...

  5. SciKit-Learn 使用matplotlib可视化数据

    章节 SciKit-Learn 加载数据集 SciKit-Learn 数据集基本信息 SciKit-Learn 使用matplotlib可视化数据 SciKit-Learn 可视化数据:主成分分析(P ...

  6. Vue 改变数组触发视图更新

    最近给table做了一个点击排序的功能,数组更改以后发现data数据变了,但是视图不更新 写惯了js的我们随手一串代码 this.items[2]={message:"Change Test ...

  7. Spring入门之二-------SpringIoC之实例化Bean以及注入Bean

    一.实例化Bean 1. 通过默认构造方法实创建Bean public class Bean1 { public Bean1() { System.out.println(this.getClass( ...

  8. SpringBoot Application事件监听

    SpringBoot Application共支持6种事件监听,按顺序分别是: ApplicationStartingEvent:在Spring最开始启动的时候触发 ApplicationEnviro ...

  9. struts2 result随笔

     一.result:chain(从一个Action转发到另一个Action) chain结果类型有4个属性,分别是: actionName (default) - the name of the ac ...

  10. Java中的Math.abs()

    Math.abs(n):对int.long.float.double类型的数取绝对值 其中 int 类型的数取值范围是 -2^31——2^31-1(-2147483648 ~ 2147483647) ...