算法(Algorithms)第4版 练习 1.3.7
2017-03-07 11:40
204 查看
package com.qiusongde; import java.util.Iterator; import java.util.NoSuchElementException; import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut; public class Stack<Item> implements Iterable<Item> { private Node first; private int n; private class Node { Item item; Node next; } public Stack() { first = null; n = 0; } public void push(Item item) { Node oldfirst = first; first = new Node(); first.item = item; first.next = oldfirst; n++; } public Item pop() { if(isEmpty()) throw new NoSuchElementException("Stack is empty"); Item item = first.item; first = first.next; n--; return item; } //1.3.7 public Item peek() { if(isEmpty()) throw new NoSuchElementException("Stack is empty"); return first.item; } public boolean isEmpty() { return first == null; } public int size() { return n; } @Override public Iterator<Item> iterator() { return new StackIterator(); } private class StackIterator implements Iterator<Item> { private Node current = first; @Override public boolean hasNext() { return current != null; } @Override public Item next() { if(!hasNext()) throw new NoSuchElementException("Stack is empty"); Item item = current.item; current = current.next; return item; } @Override public void remove() { throw new UnsupportedOperationException("Stack don't support remove"); } } public static void main(String[] args) { Stack<String> stack = new Stack<String>(); StdOut.println("Initialized size:" + stack.size()); while (!StdIn.isEmpty()) { String item = StdIn.readString(); if (!item.equals("-")) { stack.push(item); StdOut.println("push success:" + item + " size:" + stack.size()); StdOut.print("Left on stack: "); for (String s : stack) { StdOut.print(s + " "); } StdOut.println(); } else { if(stack.isEmpty()) StdOut.println("pop error, stack empty"); else { StdOut.println("pop success:" + stack.pop() + " size:" + stack.size()); StdOut.print("Left on stack: "); for (String s : stack) { StdOut.print(s + " "); } StdOut.println(); } } } } }
相关文章推荐
- 算法(Algorithms)第4版 练习 2.2.11(3)
- 算法(Algorithms)第4版 练习 2.2.26
- 算法(Algorithms)第4版 练习 1.3.29
- 算法(Algorithms)第4版 练习 1.3.219
- 算法(Algorithms)第4版 练习 1.3.12
- 算法(Algorithms)第4版 练习 1.3.3
- 算法(Algorithms)第4版 练习 1.3.41
- 算法(Algorithms)第4版 练习 1.5.5
- 算法(Algorithms)第4版 练习 2.3.17
- 算法(Algorithms)第4版 练习 1.3.11
- 算法(Algorithms)第4版 练习 1.3.2
- 算法(Algorithms)第4版 练习 1.3.31
- 算法(Algorithms)第4版 练习 1.4.9
- 算法(Algorithms)第4版 练习 1.3.10
- 算法(Algorithms)第4版 练习 1.5.6
- 算法(Algorithms)第4版 练习 链表类 1.3.19~1.3.29
- 算法(Algorithms)第4版 练习 1.3.9
- 算法(Algorithms)第4版 练习 1.3.1
- 算法(Algorithms)第4版 练习 1.5.2
- 算法(Algorithms)第4版 练习 1.5.15