Resizing array笨办法,每次都要新建一个临时数组

来源:互联网 发布:淘宝开网店哪里进货 编辑:程序博客网 时间:2024/05/16 09:53

package princeton;

import java.util.NoSuchElementException;

public class MyResizingArrayQueue {

public String [] a;int count;public MyResizingArrayQueue(){    this.count = 0;    this.a = new String [2];} public void resize(int capacity){        String [] temp = new String [capacity];        for(int i =0;i<count;i++){            temp[i] =a[i];        }        a = temp;}public void enqueue(String s){    if(a.length==count){        resize(2*a.length);    }    a[count] = s;    count++;}public String dequeue(){    if (isEmpty()) throw new NoSuchElementException("Stack underflow");    String s = a[0];    String [] temp = new String[count-1];    for (int i =0;i<count-1;i++){        temp[i] = a[i+1];    }    for (int i =0;i<count-1;i++){        a[i] = temp[i];    }    a[count-1] = null;    //a = temp;    count--;    if(a.length==4*count){        resize(a.length/2);    }    return s;}public int sizeof(){    return count;}public boolean isEmpty(){    return count ==0;}public static void main(String[] args) {    // TODO Auto-generated method stub    MyResizingArrayQueue mraq = new MyResizingArrayQueue();    for(int i =0;i<args.length;i++){        mraq.enqueue(args[i]);        //System.out.println(mraq.a[i]);        //System.out.println(mraq.a.length);    }    for(int i =0;i<6;i++){        System.out.println(mraq.dequeue());        System.out.println("array length is "+mraq.a.length);    }}

}

0 0
原创粉丝点击