博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法导论——栈容器实现
阅读量:5836 次
发布时间:2019-06-18

本文共 1846 字,大约阅读时间需要 6 分钟。

hot3.png

package org.loda.structure;import java.util.Iterator;/** * * @ClassName: Stack * @Description: 自定义栈 * @author minjun* @date 2015年5月15日 下午5:22:37 * * @param 
*/public class Stack
implements Iterable
{ //数组作为基本存储结构 private Item[] items; //栈大小 private int size; //默认容量 private int capacity=0; public Stack(){ this(10); } @SuppressWarnings("unchecked") public Stack(int capacity){ this.capacity=capacity; items=(Item[]) new Object[capacity]; } //压栈 public void push(Item item){ if(size==items.length) resize(); items[size++]=item; } //出栈 public Item pop(){ if(size==0) throw new RuntimeException("栈容器已经见底了..."); return items[--size]; } //栈大小 public int size(){ return size; } //是否为空栈 public boolean isEmpty(){ return size()==0; } //两倍扩容数组 @SuppressWarnings("unchecked") private void resize() { this.capacity=this.size<<1; Item[] newItems=(Item[]) new Object[capacity]; for(int i=0;i
iterator() { return new StackIterator(); } /** * * @ClassName: StackIterator * @Description: 栈内部迭代器 * @author minjun * @date 2015年5月15日 下午5:23:48 * */ private class StackIterator implements Iterator
{ //拷贝一份size变量,用来保证以后size变量依然可以重用 private int innerSize=size; @Override public boolean hasNext() { return innerSize>0; } @Override public Item next() { return items[--innerSize]; } @Override public void remove() { throw new RuntimeException("目前不支持该方法"); } } public static void main(String[] args) { Stack
stack=new Stack
(); for(int i=0;i<20;i++){ stack.push((char)(i+65)+"bbbb"); } //下面进行两次迭代测试,目的是确认该stack的迭代器可以复用 for(String s:stack){ System.out.println(s); } System.out.println("-----------------"); for(String s:stack){ System.out.println(s); } }}

转载于:https://my.oschina.net/u/1378920/blog/415430

你可能感兴趣的文章
JAVA MAC 配置
查看>>
1134 最长上升子序列 (序列型 DP)
查看>>
js冒泡排序
查看>>
第一次作业 4班卢炳武
查看>>
const int * 与 int *const
查看>>
抽象类的调用
查看>>
libjpeg.a exists or that its path is correct
查看>>
使用硬盘,安装双系统,Win7+CentOS
查看>>
Javascript学习总结
查看>>
JS 操作Excel格式
查看>>
php 用正则替换中文字符一系列问题解决
查看>>
ActiveMQ应用笔记一:基本概念&安装
查看>>
SAE+Java+jetty
查看>>
大话数据结构之四(串)
查看>>
加热炉简是新来的整个系统的板
查看>>
Mockito使用注意事项
查看>>
[LeetCode] Palindrome Linked List 回文链表
查看>>
UVA - 825Walking on the Safe Side(dp)
查看>>
android大概是通过logcat拦截Log
查看>>
android HDMI 清晰度 分辨率
查看>>