用JAVA来编写栈
栈是被限定仅在表尾进行插入和删除运算的线性表,栈遵循的是先进后出(后进先出)的原则。
下面我们用Java代码进行模拟栈。
构建一个模拟栈的类MyStack
package com.tankiy.array;
/**
* 栈
* @author Tankiy
*
*/
public class MyStack {
/**
* 栈顶的索引
*/
private int top;
/**
* 栈的大小
*/
private int maxSize;
/**
* 栈的数组元素
*/
private Object array[];
/**
* 构造方法,构造栈的大小,栈顶的索引
* @param maxSize
*/
public MyStack(int maxSize) {
this.maxSize = maxSize;
array = new Object[maxSize];
top = -1;
}
/**
* 入栈
* @param value
*/
public void push(Object value) {
array[++top] = value;
}
/**
* 出栈
* @return
*/
public Object pop() {
return array[top--];
}
/**
* 读取栈顶的元素
* @return
*/
public Object getValue() {
return array[top];
}
/**
* 判断栈是否为空
* @return
*/
public boolean isEmpty() {
return top == -1;
}
/**
* 判断栈是否已经满
* @return
*/
public boolean isFull() {
return top == maxSize - 1;
}
}
我们用JUnit4来进行测试。
package com.tankiy.array;
import static org.junit.Assert.*;
import org.junit.Test;
public class MyStackTest {
@Test
public void stackTest() {
//定义栈的大小
MyStack myStack = new MyStack(10);
//将元素入栈
myStack.push("北");
myStack.push("京");
myStack.push("欢");
myStack.push("迎");
myStack.push("你");
while(!myStack.isEmpty()) {
//出栈,直到栈空为止
System.err.print(myStack.pop());
}
}
}
出现结果为:你迎欢京北.你即实现啦