顺序栈:
栈(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源码地址:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。