码迷,mamicode.com
首页 > 编程语言 > 详细

用数组实现栈demo

时间:2016-02-19 16:02:42      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

package cn.aust.zyw.demo;

import java.util.Iterator;

/**
 * Created by zyw on 2016/2/19.
 * 用数组实现栈
 */
public class MyStack<T> implements Iterable<T>{
    public static  void main(String args[]){
        MyStack<Integer> myStack=new MyStack<>();
        for(int i=0;i<8;i++){
            myStack.push(i);
        }
        Iterator iter=myStack.iterator();
        while(iter.hasNext()){
            System.out.println(iter.next());
        }

    }
    private int N=0;
    private T a[]=(T[]) new Object[5];
    public void push(T t){
        if(isFull()) resize(a.length*2);
        a[N++]=t;
    }
    public T pop(){
        if(N<0)
            throw new RuntimeException("栈已空");
        T t=a[--N];
        a[N]=null;//垃圾回收
        if(N>0&&N==a.length/4){
            resize(a.length/2);
        }
        return t;
    }
    private boolean isEmpty(){return N==0;}
    private boolean isFull(){return  N==a.length;}
    private void resize(int max){
        T t[]=(T[]) new Object[max];
        for(int i=0;i<N;i++){
            t[i]=a[i];
        }
        a=t;
    }
    int size(){return  N;}
    @Override
    public Iterator<T> iterator() {
        return new Iterator<T>() {
            private int i=N;
            @Override
            public boolean hasNext() {
                return i>0;
            }
            @Override
            public T next() {
                return a[--i];
            }
        };
    }


}

 

用数组实现栈demo

标签:

原文地址:http://www.cnblogs.com/yunwuzhan/p/5201224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!