1. 程式人生 > >棧的實現Java

棧的實現Java

結構 import rabl private swa cti element code 元素

 1 package practice;
 2 
 3 import java.util.Iterator;
 4 //
 5 public class MyStack<T> implements Iterable<T> {
 6     private T[] a;
 7     private int p = 0;
 8     @SuppressWarnings("unchecked")
 9     public MyStack() {
10         a = (T[]) new Object[1];
11     }
12     
13     public
void push(T elements) { 14 if (a.length == p) {resize(2*a.length);} 15 a[p++] = elements; 16 } 17 18 public T pop() { 19 if (a.length/4 == p) {resize(a.length/2);} 20 return a[--p]; 21 } 22 23 @SuppressWarnings("unchecked") 24 public void resize(int
length) { 25 T[] b = (T[]) new Object[length]; //將數組長度改變 26 for (int i = 0; i < p; i++) { //將數組復制 27 b[i] = a[i]; 28 } 29 a = b; //讓a指向b的內存空間 30 } 31 32 public boolean isEmpty() { 33 return p == 0; 34 } 35 36 public int size() {
37 return p; 38 } 39 @Override 40 public Iterator<T> iterator() { //使數據結構可以讓foreach訪問 41 return new ArrayIterator(); 42 } 43 private class ArrayIterator implements Iterator<T>{ 44 45 private int p2 = 0; 46 47 @Override 48 public boolean hasNext() { //return false 則foreach終止 49 return p2 != p; 50 } 51 52 @Override 53 public T next() { //foreach 尋找下一個元素 54 return a[p2++]; 55 } 56 } 57 }

棧的實現Java