栈为后进先出的规则,即LIFO(last-in,first-out)
栈的访问和搜素时间复杂度为O(n),插入与删除时间复杂度为O(1)
要实现栈的push(insert)和pop(delete)方法,要有上溢与下溢的考虑,代码如下:
package trf;
public class MyStackTest {
public static void main(String[] args) {
MyStack mystack = new MyStack(10);
try {//主函数最好别抛出了,要捕捉异常
mystack.push(3);//这里几行自己可以随便测试一下
System.out.println(mystack.pop());
} catch (Exception e) {
e.printStackTrace();
}
}
}
class MyStack{
private int top;//栈针,始终指向最上面的元素
private int[] data;//用数组实现栈
public MyStack(int size){
top = -1;//top初始值为-1
data = new int[size];
}
public void push(int x) throws Exception{
if(top == data.length-1)//代表栈满了
throw new Exception("Overflow");//上溢
data[++top] = x;
}
public int pop() throws Exception{
if(top == -1)//代表栈空了
throw new Exception("Underflow");//下溢
return data[top--];
}
}