65 lines
1.6 KiB
Java
65 lines
1.6 KiB
Java
|
package Stack;
|
|||
|
|
|||
|
/**
|
|||
|
* 顺序栈(基于数组实现)
|
|||
|
* Author: PeiJiaNi
|
|||
|
*/
|
|||
|
public class StackBaseArray {
|
|||
|
private int[] items; // 数组
|
|||
|
private int count; // 栈中元素个数
|
|||
|
private int length; // 栈空间大小
|
|||
|
|
|||
|
public StackBaseArray(int capactiy) {
|
|||
|
this.items = new int[capactiy];
|
|||
|
this.count = 0;
|
|||
|
this.length = capactiy;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 入栈操作 时间复杂度O(1)
|
|||
|
* @param item 要入栈的元素
|
|||
|
* @return 入栈成功则返回true,否则返回false
|
|||
|
*/
|
|||
|
public boolean push(int item) {
|
|||
|
if(count == length) {
|
|||
|
System.out.println("当前栈已满,无法进行入栈操作");
|
|||
|
return false;
|
|||
|
}
|
|||
|
items[count] = item;
|
|||
|
++count;
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 出栈操作 时间复杂度O(1)
|
|||
|
* @return 如果栈内不为空,则返回栈顶元素,否则返回-1
|
|||
|
*/
|
|||
|
public int pop(){
|
|||
|
if(count == 0) {
|
|||
|
System.out.println("当前栈已空,无法进行出栈操作");
|
|||
|
return -1;
|
|||
|
}
|
|||
|
|
|||
|
// 返回下标为 count-1 的数组元素,并且栈中元素个数count-1
|
|||
|
return items[--count];
|
|||
|
}
|
|||
|
|
|||
|
public static void main(String[] args){
|
|||
|
StackBaseArray stack = new StackBaseArray(6);
|
|||
|
stack.push(1);
|
|||
|
stack.push(2);
|
|||
|
stack.push(3);
|
|||
|
stack.push(4);
|
|||
|
stack.push(5);
|
|||
|
System.out.println(stack.pop());
|
|||
|
System.out.println(stack.pop());
|
|||
|
System.out.println(stack.pop());
|
|||
|
System.out.println(stack.pop());
|
|||
|
System.out.println(stack.pop());
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|