数据结构(牛小飞)5栈.ppt
栈的数组实现A进栈栈的基本操作:进栈,出栈topOfStacktopOfStackBtopOfStackCtopOfStack出栈EDCBAtopOfStacktopOfStacktopOfStackpublicclassArrayStackAnyType{privateAnyType[]theArray;//存储空间基址privateinttopOfStack;//栈顶privatestaticfinalintDEFAULT_CAPACITY=10;//数组容量成员方法:}1构造函数2isEmpty3push4pop5java语言描述:6栈的数组实现ArrayStack原形:ArrayStack()作用:形成一个空栈publicArrayStack(){//空栈初始化ensureCapacity(DEFAULT_CAPACITY);topOfStack=-1;}topOfStackisEmptyboolisEmpty(){//reterntopOfStack==-1;}原形:booleanisEmpty()作用:测试栈中是否有数据元素if(topOfStack==-1)returntrue;returnfalse;pop原形:publicAnyTypepop()作用:将栈顶的数据元素从栈中删除,并将其值赋给变量popVal。ABtopOfStack过程:popVal=B=theArray[topOfStack]topOfStackpoppublicAnyTypepop()throwsStackEmptyException{}if(isEmpty())thrownewStackEmptyException(Stackpop);AnyTypepopVal;popVal=theArray[topOfStack];topOfStack--;returnpopVal;push原形:voidpush(AnyTypex)作用:把元素x插入栈顶过程:AtopOfStacktopOfStackB01020304publicvoidpush(AnyTypex){}//theArray[++topOfStack]=x;if(topOfStack+1=DEFAULT_CAPACITY)ensureCapacity(topOfStack+10);topOfStack++;05theArray[topOfStack]=x;push栈的链式实现单链表5%55%30%10%La1a0a2以讨论的形式讲解后面链式栈的实现栈的链式实现栈顶栈空?栈满?似乎无限…栈中数据元素的个数?链式栈的逻辑形态Sa1a0a2S为空栈底栈的链式实现publicclassSingleLinkedStackAnyType{java语言描述:privateNodeAnyTypetop;//栈顶元素publicvoidmakeEmpty(){top=null;}publicSingleLinkedStack(){top=null;theSize=0;}publicbooleanisEmpty(){returntop==null;}}privateinttheSize;publicAnyTypepop()publicvoidpush(AnyTypex)popa0a1a2toptop=top.next;popVal=top.data;publicAnyTypepop()throwsStackEmptyException{if(isEmpty())thrownewStackEmptyException(Stackpop);AnyTypepopVal;returnpopVal;}toptheSize--;pushtopa1a2a3NodeAnyTypenewNode=newNode(x);xnewNodenewNode.next=