Java 栈(Stack)的数据实现方式

栏目: Java · 发布时间: 5年前

public class StackOfArray<E> implements Iterable<E> {

	private E[] item = (E[]) new Object[16];
	private int N = 0;

	private void reSize(int max) {
		E[] temp = (E[]) new Object[max];
		for (int i = 0; i < N; i++) {
			temp[i] = item[i];
		}
		item = temp;
	}

	private void push(E t) {
		if (item.length == N) {
			reSize(2 * item.length);
		}
		item[N++] = t;

	}

	private E pop() {
		E t = item[--N];
		item[N] = null;
		if (N > 0 && N == item.length / 4)
			reSize(item.length / 2);
		return t;
	}

	private E peek() {
		int i = N;
		return item[--i];
	}

	private boolean isEmpty() {
		return N == 0;
	}

	private int size() {
		return N;
	}

	@Override
	public Iterator<E> iterator() {

		return new ArrayIterator();
	}

	class ArrayIterator implements Iterator<E> {
		int i = N;

		@Override
		public boolean hasNext() {

			return i > 0;
		}

		@Override
		public E next() {
			return item[--i];
		}

	}

	public static void main(String[] args) {
		StackOfArray<String> stact = new StackOfArray<>();
		stact.push("A");
		stact.push("W");
		stact.push("E");
		stact.push("R");
		System.out.println(stact.peek());
		System.out.println(stact.pop());
		System.out.println("" + stact.isEmpty());
		System.out.println("" + stact.size());
		Iterator<String> it = stact.iterator();
		while (it.hasNext()) {
			System.out.println(it.next());
		}
	}

}

复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

我的第一本算法书

我的第一本算法书

[日]石田保辉、[日]宮崎修一 / 张贝 / 人民邮电出版社 / 2018-10 / 69.00元

本书采用大量图片,通过详细的分步讲解,以直观、易懂的方式展现了7个数据结构和26个基础算法的基本原理。第1章介绍了链表、数组、栈等7个数据结构;从第2章到第7章,分别介绍了和排序、查找、图论、安全、聚类等相关的26个基础算法,内容涉及冒泡排序、二分查找、广度优先搜索、哈希函数、迪菲 - 赫尔曼密钥交换、k-means 算法等。 本书没有枯燥的理论和复杂的公式,而是通过大量的步骤图帮助读者加深......一起来看看 《我的第一本算法书》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试