zoukankan      html  css  js  c++  java
  • 算法(Algorithms)第4版 练习 1.3.1

    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 FixedCapacityStackOfStrings implements Iterable<String> {
        
        private String[] a;
        private int n;
    
        public FixedCapacityStackOfStrings(int cap) {
            a = new String[cap];
            n = 0;
        }
        
        public void push(String item) {
            if(isFull())
                throw new IndexOutOfBoundsException("FiexdCapcityStackOfString is Full");
            a[n++] = item;
        }
        
        public String pop() {
            if(isEmpty())
                throw new NoSuchElementException("FiexdCapcityStackOfString is empty");
            return a[--n];
        }
        
      //1.3.1
        public boolean isFull() {
            return n == a.length;
        }
        
        public boolean isEmpty() {
            return n == 0;
        }
        
        public int size() {
            return n;
        }
        
        @Override
        public Iterator<String> iterator() {
            return new ReverseArrayIterator();
        }
        
        private class ReverseArrayIterator implements Iterator<String> {
    
            private int i = n;
            
            @Override
            public boolean hasNext() {
                return i > 0;
            }
    
            @Override
            public String next() {
                return a[--i];
            }
            
        }
        
        public static void main(String[] args) {
            
            int max = 5;
            FixedCapacityStackOfStrings stack = new FixedCapacityStackOfStrings(max);
            StdOut.println("stack initialized max size is:" + max);
            
            while (!StdIn.isEmpty()) {
                
                String item = StdIn.readString();
                
                if (!item.equals("-")) {
                    if(stack.isFull())
                        StdOut.println("push error, stack full");
                    else {
                        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();
                    }
                }
                
            }
    
        }
    
    }
    stack initialized max size is:5
    to
    push success:to size:1
    Left on stack: to 
    be
    push success:be size:2
    Left on stack: be to 
    or
    push success:or size:3
    Left on stack: or be to 
    not
    push success:not size:4
    Left on stack: not or be to 
    to
    push success:to size:5
    Left on stack: to not or be to 
    be
    push error, stack full
    -
    pop success:to size:4
    Left on stack: not or be to 
    -
    pop success:not size:3
    Left on stack: or be to 
    -
    pop success:or size:2
    Left on stack: be to 
    -
    pop success:be size:1
    Left on stack: to 
    -
    pop success:to size:0
    Left on stack: 
    -
    pop error, stack empty
  • 相关阅读:
    p1822
    Spring框架——文件上传(SpringMVC)
    Spring框架——拦截器(SpringMVC)
    Spring框架——SpringMVC
    Spring框架——AOP
    Spring框架——SpringEL
    Spring框架——Bean与DI
    毕业实习与毕设
    Spring框架——Ioc、DI与Spring框架
    Java基础——异常和断言
  • 原文地址:https://www.cnblogs.com/songdechiu/p/6514532.html
Copyright © 2011-2022 走看看