public class arrayStack{
private long[] a;
private int size;
private int top;
public arrayStack(int maxSize){
this.size = maxSize;
this.a = new long[size];
this.top = -1; // 代表空栈
}
public void push (long value) {
if (isFull()) {
System.out.println("栈已满");
return;
}
a[++top] = value;
}
public long pop () {// 弹出栈顶内容,删除
if (isEmpty()) {
System.out.println("栈已空");
return 0;
}
return a[top--];
}
public long peek () {// 返回栈顶内容,但不删除
if (isEmpty()) {
System.out.println("栈已空");
return 0;
}
return a[top];
}
public boolean isFull () {
return top == size - 1;
}
public boolean isEmpty () {
return top == -1;
}
public int size(){
return top + 1;
}
}
数据项入栈和出栈的时间复杂度为O(1)。这也就是说,栈操作所消耗的时间不依赖于栈中的个数,因此操作时间很短。栈不需要比较和移动操作。