下压栈:动态数组实现
来源:互联网 发布:电子线路的仿真软件 编辑:程序博客网 时间:2024/04/28 10:53
栈解释
// 栈是限制插入和删除只能在一个位置上进行的表;
// 通过push向栈输入,通过pop和栈顶指针从栈输出;
// 栈模型:只有栈顶元素是可访问的。
Java实现
package com.base;import java.util.EmptyStackException;import java.util.Iterator;/** * 下压栈:动态数组实现 * * @author Administrator * */public class ResizingArrayStack<Item> implements Iterable<Item> { private Item[] a = (Item[]) new Object[1]; // 栈元素 private int N = 0; public boolean isEmpty() { return N == 0; } public int size() { return N; } // 扩容 private void resize(int max) { Item[] tmp = (Item[]) new Object[max]; for (int i = 0; i < N; i++) { tmp[i] = a[i]; } a = tmp; } // 入栈 public void push(Item item) { if (N == a.length) { resize(a.length * 2); } a[N++] = item; } // 出栈 public Item pop() { Item item = a[--N]; a[N] = null; if (N > 0 && N == a.length / 4) { resize(a.length / 2); } return item; } // 查看栈顶元素 public Item peek() { if (isEmpty()) { throw new EmptyStackException(); } return a[N - 1]; } @Override public Iterator<Item> iterator() { return new ReverseArrayIterator(); } // 迭代器——逆序迭代 private class ReverseArrayIterator implements Iterator<Item> { private int i = N; @Override public boolean hasNext() { return i > 0; } @Override public Item next() { return a[--i]; } @Override public void remove() { } } public static void main(String[] args){ ResizingArrayStack<String> ras = new ResizingArrayStack<>(); System.out.println("元素个数" + ras.size()); ras.push("www."); ras.push("baidu"); ras.push(".com"); ras.push(".cn"); System.out.println("栈顶元素" + ras.peek()); System.out.println("--栈元素个数" + ras.size()); ras.pop(); System.out.println("栈顶元素" + ras.peek()); System.out.println("--栈元素个数" + ras.size()); Iterator<String> itr = ras.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } }}
0 0
- 下压栈:动态数组实现
- 下压栈(能动态调整数组大小的实现)
- 下压栈(LIFO) (能动态调整数组大小的实现)
- 下压栈(能够动态调整数组大小的实现)
- 下压栈——能够动态调整数组大小的实现
- 下压(LIFO)栈(能够动态调整数组大小的实现)
- 算法1.1 下压(LIFO)栈 (能够动态调整数组大小的实现)
- 算法1.1 下压(LIFO)栈(能动态调整数组大小的实现)
- java算法之下压栈来动态调整数组大小
- Java下压栈实现-可调整数组大小(p88)
- 下压栈:链表实现
- 算法1.1 下压栈(LIFO)能动态调整数组的大小
- 下压栈-能够自动调整数组大小实现并实现迭代功能
- 下压栈(键表实现)
- 下压栈(Stack)
- 下压(LIFO栈)_API
- 泛型定容下压栈
- 下压堆栈(链表实现)
- 【高并发解决方案】RabbitMQ的几种典型使用场景
- 英文构词法 —— circum- 前缀
- Hibernate的主配置文件hibernate.cfg.xml
- SAP ABAP 加锁和解锁
- MyBatis映射文件中(Bean.xml)的大于号小于号
- 下压栈:动态数组实现
- 美团点评研发笔试题
- Linux一些command not found
- 通向架构师的道路(第十九天)使用maven构建Spring工程
- 我想问一些关于red5直播的问题,下面我的详细情况
- Jenkins集成工具的使用(二)
- 约瑟夫环问题
- 判断程序是不是第一次启动
- jQuery常用指令