Java基础复****笔记05数据结构-栈刘岩Email:suhuanzheng7784877@栈栈是一种比较特殊的线性表,它的原则就是先进后出,后进先出。你就把他想做一个你放书的大箱子,要想看放在最底层的书(压箱底的),那么得先拿出来上面的所有书之后那本最底层的书才能取到。同样栈也是这个意思。栈的操作栈的操作比线性表的操作要少一些,这也可以看出来栈结构实际上就是在线性表的基础上加了一些不能进行的操作才叫做栈。栈的操作有:入栈、出栈、访问栈顶元素、清空栈。栈的使用场景展示一个比较有用的结构,比如做语法分析、递归、支持撤消都可以使用栈来实现。栈的顺序实现栈的顺序实现和线性表的顺序实现差不多,都是用一个数组来进行数据的存取。;/***栈的顺序实现****@authorliuyan****@param<E>*/lassMyArrayStack<E>{ //临时数组 privateObject[]objects; //默认临时数组的初始大小 privatefinalstaticintDef_Size=16; //记录实实在在的元素个数 privateintelementSize; publicMyArrayStack(){ objects=newObject[Def_Size]; } /** *栈顶添加元素 ****@parame */ publicvoidpush(Ee){ if(elementSize==0){ objects[0]=e; elementSize++; return; } for(inti=0;i<;i++){ if(objects[i]==null){ objects[i]=e; elementSize++; break; } } } /** *从栈顶出元素,删除栈顶元素 * ****@return */ publicEpop(){ if(isEmpty()){ thrownewRuntimeException("栈已经空"); } ElastElement=(E)objects[elementSize-1]; objects[elementSize-1]=null; elementSize--; returnlastElement; } /** *从栈顶出元素,不删除栈顶元素 * ****@return */ publicEpeek(){ if(isEmpty()){ thrownewRuntimeException("栈已经空"); } ElastElement=(E)objects[-1]; returnlastElement; } /** *栈空间大小 ****@return */ publicintgetSize(){ returnelementSize; } /** *栈是否为空 ****@return */ publicbooleanisEmpty(){ returnelementSize==0; } /** *清空所有元素 */ publicvoidclear(){ for(inti=0;i<elementSize;i++){ objects[i]=0; } elementSize=0; } ***@Override publicStringtoString(){
Java基础复习笔记05数据结构-栈 来自淘豆网www.taodocs.com转载请标明出处.