我理解的数据结构(二)——栈(Stack)1、栈的基本结构是线性的。与数组相比,栈对应的操作是数组的子集只能从一端添加元素,也只能从同一端取出元素。这一端称为栈顶。栈是一种后进先出的数据结构,LIFO(LastInFirstOut)二、栈的应用Undo操作(undo)程序调用使用的系统栈3.栈的实现其实,实现一个栈结构是很简单的。我们只需要复用上一节封装好的数组,就可以快速实现栈的创建。使用数组的最后一个元素作为堆栈的顶部元素。1.首先,我们为栈创建借口,其中声明了我们需要实现的方法:publicinterfaceStack{booleanisEmpty();intgetSize();//移除栈顶元素Epop();//查看栈顶元素Epeek();//入栈voidpush(Eele);}注意:这里我们有一个peek方法,就是查看栈顶元素,所以需要在自己封装的数组类中添加一个查看的方法最后一个元素://获取最后一个元素publicEgetLast(){returnget(size-1);}2.封装我们自己的栈publicclassArrayStackimplementsStack{privateArrayNewarray;publicArrayStack(intcapacity){array=newArrayNew<>(capacity);}publicArrayStack(){array=newArrayNew<>();}publicintgetCapacity(){returnarray.getCapacity();}@OverridepublicintgetSize(){returnarray.getSize();}@OverridepublicbooleanisEmpty(){returnarray.isEmpty();}@Overridepublicvoidpush(Eele){array.addLast(ele);}@OverridepublicEpop(){返回数组。删除最后一个();}@Override公共cEpeek(){返回array.getLast();}@OverridepublicStringtoString(){StringBuilderres=newStringBuilder();res.append("栈:[");对于(inti=0;istack=newArrayStack<>();对于(inti=0;i