zoukankan      html  css  js  c++  java
  • 动态数组实现下压栈

    import java.util.Iterator;
    
    /**
     * 动态数组实现下压栈
     * 成员变量:容器数组arr,元素个数count
     * 私有方法:调整数组大小resize()
     * 公开方法:添加元素push()、删除元素pop()、获取大小size()、判断是否为空isEmpty()
     * 要求:实现泛型、迭代器、
     */
    public class ArrayStack<Item> implements Iterable<Item> {
        private Item[] arr;
        private int count;
    
        public ArrayStack() {
            arr = (Item[])new Object[5];
            count = 0;
        }
        public ArrayStack(int n) {
            arr = (Item[])new Object[n];
            count = 0;
        }
    
        private void resize(int size){
            Item[] temp =  (Item[])new Object[size];
            for(int i=0;i<arr.length;i++){
                temp[i]=arr[i];
            }
            arr = temp;
        }
        public void push(Item e){
            if(arr.length == count){
                resize(2*arr.length);
            }
            arr[count]=e;
            count++;
        }
    
        public Item pop(){
            if(count==0) return null;
            Item temp = arr[count-1];
            arr[count-1]=null;
            count--;
            if(count<arr.length/2){
                resize(arr.length/2);
            }
            return temp;
        }
    
        public int size(){
            return count;
        }
    
        public boolean isEmpty(){
            if(count==0) return true;
            return false;
        }
    
        @Override
        public Iterator<Item> iterator() {
            return new Iterator<Item>() {
                int i=count-1;
                @Override
                public boolean hasNext() {
                    if(i>=0) return true;
                    return false;
                }
    
                @Override
                public Item next() {
                    return arr[i--];
                }
            };
        }
    }
    /**
     * 测试案例
     */
    public class TestCase {
        public static void main(String[] args) {
            ArrayStack<Integer> integers = new ArrayStack<>();
            integers.push(1);
            integers.push(2);
            integers.push(3);
            integers.push(4);
            integers.push(5);
            System.out.println(integers.pop());
            System.out.println(integers.size());
            System.out.println(integers.isEmpty());
            System.out.println("======================");
            for(Integer e :integers){
                System.out.println(e);
            }
        }
    }
    //结果
    5
    4
    false
    ======================
    4
    3
    2
    1
  • 相关阅读:
    用.net开发wap
    MVC3 中使用 Ajax.ActionLink Ajax.BeginForm
    收藏一下这个微软MVP的老外博客
    第三篇:Django的路由系统
    第二篇:Django自定义登录功能
    第一篇:Django简介
    json和pickle序列化模块
    oracle 11gr2 rac修改VIP
    修改监听端口号
    删除磁盘组
  • 原文地址:https://www.cnblogs.com/youzoulalala/p/11089823.html
Copyright © 2011-2022 走看看