用JAVA来编写栈

   是被限定仅在表尾进行插入和删除运算的线性表,栈遵循的是先进后出(后进先出)的原则。

用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());
		}
	}
}

    出现结果为:你迎欢京北.你即实现啦

你可能感兴趣的:(java)