(用来做笔记,欢迎交流讨论!)
程序包含以下几个方法:
1. public boolean isEmpty() //判栈空
2. public boolean isFull() //判栈满
3. public void push(T num) //进栈
4. public void pop() //出栈
5. public T getTop() //读栈顶元素
贴上代码:
package com.fei.example.lib;
public class SeqStack<T> {
private T[] array;
private int maxSize;
private int top;//top指向当前栈顶
public SeqStack(int maxSize) {
this.maxSize = maxSize;
array = (T[]) new Object[maxSize];
top = -1;
}
//判栈空
public boolean isEmpty() {
return top == -1;
}
//判栈满
public boolean isFull() {
return top == maxSize - 1;
}
//进栈
public void push(T num) {
if (isFull()) {
System.out.println("栈满,进行扩容");
maxSize = maxSize + 10;
T[] newArray = (T[]) new Object[maxSize];
System.arraycopy(array, 0, newArray, 0, array.length);
array = newArray;
}
array[++top] = num;
}
//出栈
public void pop() {
if (isEmpty()) {
System.out.println("栈为空");
return;
}
top--;
}
//读栈顶元素
public T getTop() {
return array[top];
}
//测试数据
public static void main(String[] args) {
SeqStack<String> stack = new SeqStack<>(3);
stack.pop();
stack.push("00");
stack.push("11");
stack.push("22");
stack.push("33");
stack.push("44");
stack.pop();
System.out.println(stack.getTop());
}
}