1. 程式人生 > 其它 >8.陣列模擬棧

8.陣列模擬棧

1.定義變數

private int maxSize; // 棧的大小
	private int[] stack; // 陣列,陣列模擬棧,資料就放在該陣列
	private int top = -1;// top表示棧頂,初始化為-1private int maxSize; // 棧的大小
	private int[] stack; // 陣列,陣列模擬棧,資料就放在該陣列
	private int top = -1;// top表示棧頂,初始化為-1

2.構造器

public ArrayStack(int maxSize) {
		this.maxSize = maxSize;
		stack = new int[this.maxSize];
	}

3.棧滿

public boolean isFull() {
		return top == maxSize - 1;
	}

4.棧空

public boolean isEmpty() {
		return top == -1;
	}

5.入棧-push

public void push(int value) {
		//先判斷棧是否滿
		if(isFull()) {
			System.out.println("棧滿");
			return;
		}
		top++;
		stack[top] = value;
	}

6.出棧-pop, 將棧頂的資料返回

public int pop() {
		//先判斷棧是否空
		if(isEmpty()) {
			//丟擲異常
			throw new RuntimeException("棧空,沒有資料~");
		}
		int value = stack[top];
		top--;
		return value;
	}

7.顯示棧的情況[遍歷棧], 遍歷時,需要從棧頂開始顯示資料

public void list() {
		if(isEmpty()) {
			System.out.println("棧空,沒有資料~~");
			return;
		}
		//需要從棧頂開始顯示資料
		for(int i = top; i >= 0 ; i--) {
			System.out.printf("stack[%d]=%d\n", i, stack[i]);
		}
	}