泛型定容栈
来源:互联网 发布:arm linux nohup 编辑:程序博客网 时间:2024/05/22 14:55
//一种表示泛型定容栈的抽象数据类型package Algorithms;import java.util.Iterator;import java.util.NoSuchElementException;import edu.princeton.cs.algs4.StdIn;import edu.princeton.cs.algs4.StdOut;public class P84_FixedCapacityStack<Item> implements Iterable<Item> { private Item[] a; // holds the items private int N; // number of items in stack // create an empty stack with given capacity public P84_FixedCapacityStack(int capacity) { a = (Item[]) new Object[capacity]; // no generic array creation N = 0; } public boolean isEmpty() { return N == 0; } public void push(Item item) { a[N++] = item; } public Item pop() { return a[--N]; } public Iterator<Item> iterator() { return new ReverseArrayIterator(); } public class ReverseArrayIterator implements Iterator<Item> { private int i = N-1; public boolean hasNext() { return i >= 0; } public Item next() { if (!hasNext()) throw new NoSuchElementException(); return a[i--]; } public void remove() { throw new UnsupportedOperationException(); } } public static void main(String[] args) { int max = Integer.parseInt(args[0]); P84_FixedCapacityStack<String> stack = new P84_FixedCapacityStack<String>(max); while (!StdIn.isEmpty()) { String item = StdIn.readString(); if (!item.equals("-")) stack.push(item); else if (stack.isEmpty()) StdOut.println("BAD INPUT"); else StdOut.print(stack.pop() + " "); } StdOut.println(); // print what's left on the stack StdOut.print("Left on stack: "); for (String s : stack) { StdOut.print(s + " "); } StdOut.println(); } }
0 0