废话不多说,直接上代码
实现类,主要实现功能如下:
- 返回栈长度
- 判断栈满、栈空
- 压栈、弹栈
- 遍历栈中的元素
- 其中带有有参构造和无参构造方法,默认初始化栈的长度为5,用户可以通过有参构造自定义长度
package com.company.arry;
// 使用数组模拟栈的接操作
public class ArrayImitateStack {
// 定义一个数组作为栈
Object [] stack;
private int length = 5;
private int size = 0;
public ArrayImitateStack() {
//设置默认初始长度为5
this.stack = = new Object[5];
}
// 定义有参构造,用户自定义栈的长度
public ArrayImitateStack(int length) {
this.length = length;
this.stack = new Object[length];
}
// 返回栈的长度
public int len(){
return size;
}
// 判断栈是否为空
public boolean isEmpty(){
if (size == 0){
return true;
}else {
return false;
}
}
// 判断栈满
public boolean isFull(){
if (size == length){
return true;
}else {
return false;
}
}
// 压栈
public void push(Object msg){
if (isFull()){
System.out.println("Stack 已满");
}else{
stack[stack.length-1-size] = msg;
size ++;
}
}
// 弹栈
public Object pop(){
Object temp = null;
if (this.isEmpty()){
temp = "Stack 为空";
}else {
temp = stack[stack.length-size];
size --;
// System.out.println("stack["+(stack.length-size)+"]"+stack[stack.length-size]);
}
return temp;
}
// 遍历栈中的元素
public void show(){
for (int i=0;i<stack.length;i++){
if (stack[i] != null)
System.out.print(stack[i]+" ;");
}
}
}
测试类
package com.company.arry;
public class Test {
public static void main(String[] args) {
ArrayImitateStack stack = new ArrayImitateStack(3);
System.out.println("stack初始元素个数: " + stack.len());
;
System.out.println("stack初始化是否为空: " + stack.isEmpty());
System.out.println("stack初始化是否满: " + stack.isFull());
stack.push("java");
stack.push("c");
stack.push("php");
System.out.println("stack压栈之后元素个数: " + stack.len());
System.out.println("stack是否满: " + stack.isFull());
// 继续压栈
stack.push("R");
// 遍历栈中元素
stack.show();
System.out.println();
System.out.println(stack.pop());
System.out.println("弹栈之后stack的元素个数: " + stack.len());
System.out.println(stack.pop());
System.out.println(stack.pop());
// stack.push("C++");
System.out.println(stack.pop());
}
}
/*
运行结果如下:
stack初始元素个数: 0
stack初始化是否为空: true
stack初始化是否满: false
stack压栈之后元素个数: 3
stack是否满: true
Stack 已满
php ;c ;java ;
php
弹栈之后stack的元素个数: 2
c
java
Stack 为空
*/