栈的原理:先进后出,类似枪夹的子弹,先进的子弹后出。具体代码构建一个栈如下:
/**
*
<p>Title:MyStack </p>
<p>Description:栈的应用 </p>
<p>Company: </p>
* @author ll
* @date 2017-10-24 下午22:01:57
*
*/
public class MyStack{
//底层数组实现
private long []arr;
private int top;//栈顶
//默认的构造器
public MyStack(){
//初始化数组大小
arr = new long[10];
top = -1;
}
//带参数的构造器
public MyStack(int maxSize){
arr = new long[maxSize];
top = -1;
}
/**
*
* @Title:push
* @Description:入栈
* @param @param value
* @return void
* @throws
*/
public void push(long value){
arr[++top] = value;
}
/**
*
* @Title:pop
* @Description:出栈
* @param @return
* @return long
* @throws
*/
public long pop(){
return arr[top--];
}
/**
*
* @Title:peek
* @Description:查询栈元素
* @param @return
* @return long
* @throws
*/
public long peek(){
return arr[top];
}
/**
*
* @Title:isEmpty
* @Description:判断是否为空
* @param @return
* @return boolean
* @throws
*/
public boolean isEmpty(){
return top == -1;
}
/**
*
* @Title:isFull
* @Description:判断是否满了
* @param @return
* @return boolean
* @throws
*/
public boolean isFull(){
return arr[top] == arr.length - 1;
}
}
测试类如下:
package com.ll.dataStructTest;
import org.junit.Test;
import com.ll.dataStruct.MyStack;
/**
*
<p>Title:TestMyStack </p>
<p>Description:测试栈的一些方法 </p>
<p>Company: </p>
* @author ll
* @date 2017-10-24 下午22:03:43
*
*/
public class TestMyStack {
@Test
public void testStack(){
MyStack myStack = new MyStack(6);
myStack.push(22);
myStack.push(43);
myStack.push(33);
myStack.push(3);
myStack.push(12);
myStack.push(143);
System.out.println(myStack.isEmpty());
System.out.println(myStack.isFull());
System.out.println(myStack.peek());
while(!myStack.isEmpty()){
System.out.print(myStack.pop() + ",");
}
}
}