一、简介
1.1 概念
栈:
又称为堆栈,是限制在表的一端进行插入和删除的线性表。其限制是仅允许在表的一端进行插入和删除操作,不允许在其他任何位置进行插入、查找、删除等操作。
表中进行插入、删除操作的一端称为栈顶、栈顶保存的元素称为栈顶元素。相对的,表的另一端称为栈底。当栈中没有数据元素时,称为空栈;向一个栈中插入元素又称为进栈或入栈;从一个栈中删除元素又称为出栈或退栈。
由于栈的插入和删除操作都仅在栈顶进行,后进栈的元素必定先出栈,所以又把堆栈称为后进先出表
。
顺序栈:
由于栈是运输受限的线性表,除了操作不同外,线性表的存储结构对栈也是适用的。
利用顺序存储方式实现的栈称为顺序栈。
1.2 结构图
二、简单实现
public class InitStack{
private int [] stack = null;
private int top = 0;
public InitStack(int max) {
this.stack = new int[max];
}
public void clearStack() {
this.top = 0;
}
public boolean stackEmpty() {
if(this.top == 0) {
return true;
}else {
return false;
}
}
public int stackLength() {
return this.top;
}
public int [] getTop() {
if (this.top == 0) {
return null;
}
int [] i = new int[1];
i[0] = stack[this.top - 1];
return i;
}
public boolean push(int value) {
if(this.top == this.stack.length) {
return false;
}
this.stack[this.top] = value;
this.top++;
return true;
}
public int [] pop() {
if (this.top == 0) {
return null;
}
int [] i = new int[1];
this.top--;
i[0] = stack[this.top];
return i;
}
public String stackTraverse() {
String s = "";
for (int i = 0; i < this.top; i++) {
s += this.stack[i] + "、";
}
if(s.length() == 0) {
return s;
}
return s.substring(0,s.length() - 1);
}
}