数据结构实验报告三栈的实现_第1页
数据结构实验报告三栈的实现_第2页
数据结构实验报告三栈的实现_第3页
数据结构实验报告三栈的实现_第4页
数据结构实验报告三栈的实现_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告实验题目:栈的实现实验目的:掌握栈的特点。熟悉在栈上进行的各种操作。实验要求:1.建立一个接口,定义一些常用的基本方法;2.用类实现该接口的基本方法:入栈;出栈;取栈顶元素;判空、判满;3.定义客户类来调用接口中的方法;实验环境:一台PC机,Eclipse软件程序代码:a.栈的接口:packageStack;publicinterfaceStackInterface<T>{publicvoidpush(TnewEntry);publicTpop();publicTpeek();publicbooleanisEmpty();publicvoidclear();}b.基于链表的实现的方法类packageStack;publicclassLinkedStack<T>implementsStackInterface<T>,java.io.Serializable{privateNodetopNode;//引用链表中第一个结点publicLinkedStack(){ topNode=null;} publicvoidpush(TnewEntry){//将新元素插入栈顶 //TODOAuto-generatedmethodstub NodenewNode=newNode(newEntry,topNode); topNode=newNode;//将新结点指向栈顶结点 } publicTpop(){//删除并返回栈顶 //TODOAuto-generatedmethodstub Ttop=null; if(topNode!=null) { top=topNode.getData(); topNode=topNode.getNextNode(); } returntop; } publicTpeek(){//取出栈顶并且不以任何方式改变栈 //TODOAuto-generatedmethodstub Ttop=null; if(topNode!=null) top=topNode.getData(); returntop; } publicbooleanisEmpty(){检查栈是否为空 //TODOAuto-generatedmethodstub returntopNode==null; } publicvoidclear(){从栈中删除所有元素 //TODOAuto-generatedmethodstub topNode=null; } privateclassNodeimplementsjava.io.Serializable//构造私有类Node { privateTdata; privateNodenext; privateNode(TdataPortion) { data=dataPortion; next=null; } privateNode(TdataPortion,NodenextNode) { data=dataPortion; next=nextNode; } TgetData() { returndata; } voidsetData(TnewData) { data=newData; } NodegetNextNode() { returnnext; } voidsetNextNode(NodenextNode) { next=nextNode; } }}c.基于数组的实现的方法类packageStack;publicclassArrayStack<T>implementsStackInterface<T>{ privateT[]stack;//存放栈元素的数组 privateinttopIndex;//栈顶元素索引 privatestaticfinalintDEFAULF_MAX_SIZE=50; publicArrayStack() { this(DEFAULF_MAX_SIZE); } publicArrayStack(intinitialCapacity) { stack=(T[])newObject[initialCapacity]; topIndex=-1; } publicvoidpush(TnewEntry){//将新元素插入栈顶 //TODOAuto-generatedmethodstub topIndex++; if(topIndex>=stack.length)//若数组已满 doubleArray();//扩展数组 stack[topIndex]=newEntry;//将新元素插入栈顶 } privatevoiddoubleArray()//扩展数组 { T[]oldList=stack; intoldSize=oldList.length; stack=(T[])newObject[2*oldSize]; for(intindex=0;index<oldSize;index++) stack[index]=oldList[index]; } publicTpop(){//删除并返回栈顶 //TODOAuto-generatedmethodstub Ttop=null; if(!isEmpty()) { top=stack[topIndex]; stack[topIndex]=null; topIndex--; } returntop; } publicTpeek(){//取出栈顶并且不以任何方式改变栈 //TODOAuto-generatedmethodstub Ttop=null; if(!isEmpty()) top=stack[topIndex]; returntop; } publicbooleanisEmpty(){//检查栈是否为空 //TODOAuto-generatedmethodstub returntopIndex<0; } publicvoidclear(){从栈中删除所有元素 //TODOAuto-generatedmethodstub for(topIndex=stack.length;topIndex>0;topIndex--) pop(); }}d.基于链表的实现类packageStack;publicclassClientStack{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstubStackInterface<String>myStack=newLinkedStack<String>();myStack.push("Jim");myStack.push("Jess");myStack.push("Jill");myStack.push("Jane");myStack.push("Joe");Stringtop=(String)myStack.peek();System.out.println(top+"isatthetopofthestack.");top=(String)myStack.pop();System.out.println(top+"isremoveedfromthestack.");top=(String)myStack.peek();System.out.println(top+"isatthetopofthestack.");top=(String)myStack.pop();System.out.println(top+"isremoveedfromthestack."); }}e.基于数组的实现类packageStack;publicclassClientArrayStack{ publicstaticvoidmain(String[]args){StackInterfacetryRunArray=newArrayStack();tryRunArray.push("41");tryRunArray.push("42");tryRunArray.push("43");tryRunArray.push("44");tryRunArray.push("45");Objecttop=tryRunArray.peek();System.out.println(top+"isatthetopofthestack.");top=tryRunArray.pop();System.out.println(top+"isremoveedfromthestack.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论