一、什么是栈
其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
栈是先进后出
java代码实现
package zhan;
/**
*
* @author asus
*这是一个由数组构建的栈
*栈的特点:先进后出
*
*/
public class ShuZu {
private Object[] data=null;
private int size=0;//栈的最大容量
private int top =-1;//栈顶指针 当为-1的时候表示栈元素
//普通的构造方法 默认创建一个容量为10的数组
public ShuZu(){
this(10);
}
/**
* 构造函数:根据给定的size初始化栈
*/
public ShuZu(int size){
this.size=size;
data=new Object[size];
top=-1;
}
//判空
public boolean isEmpty(){
if(top==-1){
return true;
}
return false;
}
//进栈,第一个元素top=0;
public void push(Object obj){
if(top==size-1){
System.out.println("栈满了");
}else{
data[++top]=obj;
}
}
//查看栈顶元素但不移除
public void del(){
if(top==-1){
System.out.println("栈为空");
}else{
System.out.println(data[top]);
}
}
//弹出栈顶元素
public void tan(){
if(top==-1){
System.out.println("栈位空");
}
System.out.println(data[top--]);
}
//返回对象在堆栈中的位置,以 1 为基数
public int index(Object obj){
int index=0;
for(int i=0;i<=top;i++){
if(data[i].equals(obj)){
index=i+1;
}
}
return index;
}
public static void main(String[] args) {
ShuZu shuZu=new ShuZu(12);
System.out.println( shuZu.isEmpty());
shuZu.push("1");
shuZu.push("2");
shuZu.push("3");
System.out.println(shuZu.top);
int index = shuZu.index("3");
System.out.println(index);
}
}