1.栈的定义
仅仅限定在表尾进行插入和删除操作的线性表,即后进先出。
2.栈的应用
(1)程序调用的系统栈,可以实现
(2)常见程序的撤销操作。
3.实现栈功能
(1)进栈 push
(2)出栈 pop
(3)查询顶端元素 peek
4.实现java代码
(1)实现栈接口
public interface stack<E> {
int getSize(); //获得元素个数
boolean isEmpty(); //判断是否有元素
void push(E e); //进栈
E pop(); //出栈
E peek(); //查询最顶端值
}
(2)实现栈辅助的动态数组ArrayDynamic
参考:https://mp.youkuaiyun.com/postedit/85013143上一篇blog:数组实现
(3)栈的实现:ArrayStack
public class ArrayStack<E> implements stack<E> {
ArrayDynamic<E> array;
//*********************************************************************************
//1.构造函数
public ArrayStack(int Capacity){
array=new ArrayDynamic<>(Capacity);
}
public ArrayStack(){
array=new ArrayDynamic<>();
}
//*********************************************************************************
//2.基本信息
@Override
public int getSize() {
return array.getSize();
}
@Override
public boolean isEmpty() {
return array.isEmpty();
}
public int getCapacity(){
return array.getCapacity();
}
//*********************************************************************************
/**
* 3.进栈
* @param e
*/
@Override
public void push(E e) {
array.addLast(e);
}
//*********************************************************************************
/**
* 4.出栈
* @return
*/
@Override
public E pop() {
return array.removeLast();
}
//*********************************************************************************
/**
* 4.1 查询最顶端元素
* @return
*/
@Override
public E peek() {
return array.getLast();
}
//*********************************************************************************
public String toString(){
StringBuilder res=new StringBuilder();
res.append("Stack:[");
for (int i=0;i<array.getSize();i++){
res.append(array.get(i));
if (i!=array.getSize()){
res.append(",");
}
}
res.append("]");
return res.toString();
}
}