栈是一个常用的最简单的数据结构,这里提供了其实现.内部维护了一个数组,并且可以动态的调整数组的大小.而且,提供了迭代器支持后进先出的迭代功能.Stack的实现是所有集合类抽象数据类型实现的模板,它将所有元素保存在数组中,并动态的调整数组的大小,以保持数组大小和栈大小之比小于一个常数.

  

import java.util.Iterator;public class ResizingArrayStack<Item> implements Iterable<Item> {private Item [] a=(Item[])new Object[1];//内部维护了一个数组,存储数据.private int N;    //元素数量.public ResizingArrayStack() {}public boolean isEmpty() {return N==0;}public int size() {return N;}public void push(Item item) {if(N==a.length) resize(2*a.length);    //如果不断压入,自由的变更大小a[N++]=item;}public Item pop() {Item str=a[--N];a[N]=null;if(N<a.length/4) resize(a.length/2);//如果不断弹出,保证内存的利用率return str;}public void resize(int n) {//将数组引用指向一个更大的数组Item[] items=(Item[])new Object[n];for(int i=0;i<a.length;i++) {items[i]=a[i];}a=items;}@Overridepublic Iterator<Item> iterator() {return new ReverseArrayIterator();}private class ReverseArrayIterator implements Iterator<Item> {//支持后进先出的迭代.int i=N;@Overridepublic boolean hasNext() {return i>0;}@Overridepublic Item next() {return a[--i];}    }
}

转载于:https://www.cnblogs.com/hlhdidi/p/5625658.html

算法_栈的Java的通用数组实现相关推荐

  1. 在java的实现栈的插入数据_栈之Java实现数据结构

    一.什么是栈? 栈(stack)又叫先进后出表,它是一种运算受限的线性表.它只允许在表的一端进行插入和删除操作,我们称之为栈顶,相对另一端称为栈底. 我们可以通俗一点,将栈比喻为一个垃圾桶,垃圾桶底就 ...

  2. java语言的数组描述_下列关于Java语言的数组描述中,错误的是()。_学小易找答案...

    [单选题]下面()是正确的main()方法说明. [填空题]Java规定,如果子类中定义的成员方法与父类中定义的成员方法同名,并且参数的( )和类型以及( )的类型也相同,则父类中的同名成员方法被屏蔽 ...

  3. java数组删除数组元素_如何在Java中删除数组元素

    java数组删除数组元素 When we create an array in Java, we specify its data type and size. This is used by JVM ...

  4. java 如何创建一个数组_如何用Java创建一个数组?

    在Java中,可以使用new关键字像对象一样创建数组.使用new关键字在Java中创建数组的语法-type[] reference = new type[10]; 哪里,type是数组元素的数据类型. ...

  5. 关于java数组论述正确的是_下列关于 Java 语言的数组描述中,正确的是()。...

    下列关于 Java 语言的数组描述中,正确的是(). A:数组在赋初值和赋值时都不判界 B:数组元素是按顺序存放在内存的 C:数组的长度通常用 length 表示 D:数组下标从0开始 正确答案:数组 ...

  6. java定义byte数组_浅谈java的byte数组的不同写法

    (由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"byte数组"里面全部是&qu ...

  7. java栈顶元素_栈在Java类库中的实现

    栈是一种后进先出的数据结构.在它之上,主要有三种操作: (1)判断栈是否为空--empty(): (2)在栈顶添加一个元素--push(E): (3)删除并返回栈顶元素--pop(). 在Java类库 ...

  8. java csv 数组_如何在Java中将JSON数组转换为CSV?

    JSON可以用作数据交换格式,并且是轻量级且与语言无关的.甲JSONArray可以从一个字符串解析文本以产生向量样物体和支承件的java.util.列表接口.我们可以使用org.json.CDL类将J ...

  9. java 字符串 数组 索引_如何在Java中找到数组中元素的索引?

    我希望在Java中找到给定元素的索引,知道它的内容. 我尝试了以下示例,该示例不起作用: class masi { public static void main( String[] args ) { ...

最新文章

  1. node 常用指令 node 扩展链接
  2. MVC系列-6.注册页面
  3. oracle学习数据,Oracle从入门到精通的学习笔记
  4. Leetcode好的微博
  5. android kotlin类内绑定事件,Android kotlin 点击事件防重复
  6. 恋爱必经阶段,过不来就分了
  7. 【服务器防护】centos iptables 防火墙设置 mac过滤
  8. JMF视频音频通信( 图+源码 )
  9. Bambook 简介
  10. 洛谷 2051 [AHOI2009] 中国象棋
  11. 【路径规划】基于matlab模拟退火优化遗传算法求解避障路径规划问题【含Matlab源码 889期】
  12. [原创]Android SDK下载(Linux下载SDK最新教程2020.11.26)
  13. protel 99se 负片打印
  14. 百度快照不更新与投诉处理的经验
  15. 任何人都有值得学习的地方,横瓜向[水牛党](4618415)请教问题
  16. 【计算机体系结构实验】指令调度和延迟分支
  17. 【运筹学】线性规划 图解法 ( 唯一最优解 | 无穷最优解 | 无界解 | 无可行解 )
  18. 便携式明渠流量计比对装置--执行的标准规范
  19. 乔布斯最后付出心血最多的是iPhone 5而非iPhone 4S
  20. 集成友盟的意见反馈功能

热门文章

  1. hosts文件 端口_中望软件:中望3D网络版服务端如何固定端口
  2. android 动画间隔时间,Android使用View Animation实现动画加载界面
  3. 工作2年跳槽阿里,面试官会问哪些?(免费领取Java面试题)
  4. 最佳HTML5应用开发工具有哪些?
  5. Java面试题:面向对象的特征有哪些方面?
  6. 开课吧:为什么指针被誉为C语言灵魂?
  7. QTP自动化测试从零基础到精通进阶(脚本测试、VBS语法、描述性编程、测试框架)...
  8. 团队作业——Alpha冲刺 4/12
  9. 一键安装thrift-0.9.0的脚本
  10. CAS单点登出实现案例