java取出栈顶元素_JAVA数据结构——栈

顺序栈:

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

因为栈的先进后出特性,所以我们可以用来做很多的工作,例如:我们判断一个数是否是回文数(若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数,如:12344321就是回文数),我们只需要将数据压入栈,再取出,取出的元素同原元素相等,则判断为回文数。如:123被压入栈后取出则为321所以你懂的。。。

package com.usts.edu.stack;

/**

* Created by Guanzhong Hu

* Date :2019/12/28

* Description :栈的JAVA表示,先进后出,后进先出

* Version :1.0

*/

public interface IStack {

// 置空栈

public void clear();

public boolean isEmpty();// 判断是否为空,top=0;

public int length();// length = top

public Object peek();//读取栈内元素,并返回值,若为空则返回null

public void push(Object x) throws Exception;//入栈操作,将x元素压入栈顶

public Object pop();// 删除并返回栈顶元素

public void display();

}

package com.usts.edu.stack;

/**

* Created by Guanzhong Hu

* Date :2019/12/28

* Description : 栈的实现

* Version :1.0

*/

public class SqlStack implements IStack {

private Object[] stackElem; //对象数组

private int top;// 在非空栈时,top始终指向栈顶元素的下一个存储位置,当栈空时,top = 0

public SqlStack(int maxSize) {

top = 0;

stackElem = new Object[maxSize];

}

@Override

public void clear() {

top = 0;

}

@Override

public boolean isEmpty() {

return top == 0;

}

@Override

public int length() {

return top;

}

@Override

public Object peek() {

if (!isEmpty()) {

return stackElem[top - 1];

} else {

return null;

}

}

@Override

public void push(Object x) throws Exception {

if (top == stackElem.length) throw new Exception("栈内元素已满");

stackElem[top] = x;

top++;

}

@Override

public Object pop() {

if (isEmpty())

return null;

else

return stackElem[--top];

}

@Override

public void display() {

for (int i = top-1; i >=0; i--) {

System.out.println(stackElem[i].toString()+"");

}

}

}

gitee源码地址:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值