栈--数组存储--Java实现
来源:互联网 发布:影视动画行业 知乎 编辑:程序博客网 时间:2024/06/05 14:41
栈 是一种基于后进先出(LIFO)的数据结构,其他就不介绍了。
定义了两个私有变量,数组a和元素个数N
void ResizingArrayStack():初始化栈
int size(): 返回栈的元素个数
boolean isEmpty(): 判断栈是否为空
void resize(int):调整栈的大小
push(Item):压栈
pop():出栈
peek():返回栈顶元素
iterator():迭代器
class ReverseArrayIterator :迭代器类
/***********Java 使用数组动态生成栈 ********* * @author ddh * 2015/12/30 */package cn.edu.scut.ddh;import java.util.Iterator;import java.util.NoSuchElementException;@SuppressWarnings("unchecked")public class ResizingArrayStack<Item> implements Iterable<Item> {//数组,存放元素private Item[] a;//栈中元素个数private int N;//构造函数,初始化栈public ResizingArrayStack(){a = (Item[]) new Object[2]; //初始化数据大小为2N = 0;}//返回栈的大小public int size(){return N;}//判断栈是否为空public boolean isEmpty(){return N == 0;}//调整栈的大小public void resize(int capacity){Item[] nItems = (Item[]) new Object[capacity];for(int i=0; i < N; i++){nItems[i] = a[i];}a = nItems;}//压栈public void push(Item item){if(N == a.length) resize(2 * N);a[N++] = item;}//出栈public Item pop(){if( isEmpty()) throw new NoSuchElementException();Item item = a[N-1];a[N-1] = null;N--;if(N >0 && N == a.length / 4) resize(a.length / 2);return item;}//返回栈顶元素,其实这是浅复制,会影响原先的元素public Item peek(){if(isEmpty()) throw new NoSuchElementException();return a[N-1];}public Iterator<Item> iterator() {// TODO Auto-generated method stubreturn new ReverseArrayIterator();}//创建一个迭代器私有类,private class ReverseArrayIterator implements Iterator<Item>{private int i;public ReverseArrayIterator(){i = N-1;}public boolean hasNext() {return i >= 0;}public Item next() {if(!hasNext()) throw new NoSuchElementException();return a[i--];}public void remove() {}} /** * Unit tests the <tt>Stack</tt> data type. */ public static void main(String[] args) { ResizingArrayStack<String> s = new ResizingArrayStack<String>(); while (!StdIn.isEmpty()) { String item = StdIn.readString(); if (!item.equals("-")) s.push(item); else if (!s.isEmpty()) StdOut.print(s.pop() + " "); } StdOut.println("(" + s.size() + " left on stack)"); }}
0 0
- 栈--数组存储--Java实现
- Java中栈的实现(1)-使用顺序存储结构(数组)以及实现
- 栈的链式和数组存储实现
- java数组实现栈
- java数组实现栈
- java 数组实现栈
- Java数组实现栈
- 【第4节】栈的Java代码实现,【数组形式存储】
- Java实现登录、注册(使用数组存储数据)
- Java实现员工管理系统(对象数组存储)
- 栈的顺序存储结构和操作实现 数组实现
- 数据存储——Java数组,去掉重复值、增加、删除数组元素的实现方法
- java自定义栈(数组实现)
- java 用数组实现栈
- java实现栈(数组方式)
- Java用数组实现栈
- 数组实现动态栈,java
- Java数组实现自定义栈
- swift-观察者模式
- 网站设计感想3
- 记住,web项目一定要看console提示的信息
- Windows中Qt+OpenCV配置
- “Ceph浅析”系列之二Ceph概况
- 栈--数组存储--Java实现
- DLL--导出函数
- 基于RecyclerView和Volley的瀑布流照片墙实现
- “Ceph浅析”系列之三Ceph的设计思想
- ldap服务器搭建——ldap_bind: Invalid credentials (49)错误解决
- 系统要迁移机房了,要做啥事情
- js指定多个分割字符分割到同个数组中
- titlebar的使用步骤详细说明
- c++多个源文件共用一个全局变量(extern 的用法)