这几天在老家有点事,现在弄完了,继续研究一下数据结构,这次的栈并没有对多线程进行优化,如果有想优化的童鞋可以参考我上一篇文章对队列进行的优化,话不多说,上代码:

package com.voole.cn;
/**
* @Description 这是一个数组实现的栈
* @author TMAC-J
*
*/
public class StackByArray {
/**
* 储存元素的数组
*/
private Object[] array = null;
/**
* 定义数组大小
*/
private int size = ;
/**
* 定义当前数组大小
*/
private int currentSize = ;
/**
* 定义指针
*/
private int point = -;
/**
* 构造方法
*/
public StackByArray(int size){
this.size = size;
array = new Object[size];
}
/**
* 入栈
*/
public void push(Object data){
if(isFull()){
System.out.println("当前栈已满!");
return;
}
point++;//指针上移
array[point] = data;
currentSize++;
System.out.println("插入一个元素");
}
/**
* 出栈
*/
public void pop(){
if(isEmpty()){
System.out.println("当前栈为空!");
return;
}
array[point] = null;
point--;//指针下移
currentSize--;
System.out.println("删除一个元素");
}
/**
* 判断是否为满
*/
public boolean isFull(){
if(currentSize>=size)return true;
return false;
}
/**
* 判断是否为空
*/
public boolean isEmpty(){
if(currentSize<=)return true;
return false;
}
}

package com.voole.cn;


public class Test {
public static void main(String[] args) {
StackByArray sba = new StackByArray(10);
for(int i=0;i<10;i++){
sba.push(i);
}
for(int i=0;i<10;i++){
sba.pop();
}
}
}

 

输出的结果如下:

插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
插入一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素
删除一个元素

java代码实现栈的更多相关文章

  1. 远程debug调试java代码

    远程debug调试java代码 日常环境和预发环境遇到问题时,可以用远程调试的方法本地打断点,在本地调试.生产环境由于网络隔离和系统稳定性考虑,不能进行远程代码调试. 整体过程是通过修改远程服务JAV ...

  2. Java堆、栈和常量池以及相关String的详细讲解(经典中的经典) (转)

    原文链接 : http://www.cnblogs.com/xiohao/p/4296088.html 一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的 ...

  3. Java堆、栈和常量池

    摘录自 http://www.cnblogs.com/xiohao/p/4296088.html 1. 栈(stack)与堆(heap)都是Java用来在RAM中存放数据的地方.与C++不同,Java ...

  4. Java 代码编译和执行的整个过程

    Java 代码编译是由 Java 源码编译器来完成,流程图如下所示: Java 字节码的执行是由 JVM 执行引擎来完成,流程图如下所示: Java 代码编译和执行的整个过程包含了以下三个重要的机制: ...

  5. Java堆、栈和常量池以及相关String的详细讲解

    一:在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register). 这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据 ...

  6. Java堆和栈详解

    Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间 ...

  7. java堆、栈、堆栈的区别

    1.栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CP ...

  8. JVM学习笔记(二)------Java代码编译和执行的整个过程【转】

    转自:http://blog.csdn.net/cutesource/article/details/5904542 版权声明:本文为博主原创文章,未经博主允许不得转载. Java代码编译是由Java ...

  9. 常见的排序算法之Java代码解释

    一 简要介绍 一般排序均值的是将一个已经无序的序列数据重新排列成有序的 常见的排序分为: 1 插入类排序 主要就是对于一个已经有序的序列中,插入一个新的记录.它包括:直接插入排序,折半插入排序和希尔排 ...

随机推荐

  1. Maven 最佳实践

    持续不断地学习maven Maven是一个很好的工具,但同时也拥有陡峭的学习曲线.因此,将 http://books.sonatype.com/mvnref-book/reference/ 加入到你的 ...

  2. Hadoop学习路线图

    Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括, ...

  3. 有关bootstrap

    最近在接触对移动浏览器很友好的bootstrap,遂整理了一点笔记: 简单的html页面: <!DOCTYPE html><html> <head> <tit ...

  4. 初学者--bootstrap(三)下载与安装----在路上(7)

    ----------------------------------------对于学习与工作者来说用压缩版,若是研究框架则用源代码---------------------------------- ...

  5. KnockoutJS 3.X API 第七章 其他技术(3) 延迟更新

    .example { display: inline-block; padding: 1em; margin-right: 2em; background: #F6F6EF; } 注意:本文档适用于K ...

  6. C++类的静态成员详解

    类的静态成员分为静态数据成员和静态成员函数 静态数据成员 假如我们要设计一个战争游戏,游戏中有许多的兵种.游戏的过程中,每隔一段时间每个兵种都会产生,同时由于战争的消耗,每个兵种士兵的数量又会减少.为 ...

  7. Sql Server系列:数据类型转换函数

    T-SQL提供了两个显示转换的函数:CAST函数和CONVERT函数. 1. CAST函数 语法: CAST ( expression AS data_type [ ( length ) ] ) 示例 ...

  8. mysql数据库学习目录

    前面的话 对于前端工程师来说,数据库并不是主要技能点,但是基本的增删改查操作还是需要了解的.小火柴将mysql数据库的学习记录整理如下 目录  前端学数据库之基础操作 前端学数据库之数据类型 前端学数 ...

  9. javascript模拟继承

    javascript作为前端开发的标配技能,如果不掌握好它的三大特点:1.原型 2.作用域 3. 闭包 ,又怎么可以说你学好了这门语言呢?如果标配的技能都没有撑握好,怎么可以任性的玩耍呢?怎么验证自己 ...

  10. 【经验之谈】Windows环境下配置WordPress

    前言 wordpress全球著名的开放博客平台,拥有成千上万个各式插件和不计其数的主题模板样式,使用php和mysql搭建,下面说下载windows环境下配置wordpress,经验之谈. 安装 关于 ...