




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告实验题目:栈的实现实验目的:掌握栈的特点。熟悉在栈上进行的各种操作。实验要求: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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 伊犁职业技术学院《课程项目实践》2023-2024学年第二学期期末试卷
- 泰州2025年江苏泰州市第二人民医院招聘卫生专业技术人员21人笔试历年参考题库附带答案详解
- 上海中医药大学《神经及精神病学》2023-2024学年第二学期期末试卷
- 广元中核职业技术学院《金融衍生工具》2023-2024学年第二学期期末试卷
- 宁波工程学院《邮轮旅行管理》2023-2024学年第二学期期末试卷
- 天水师范学院《文化市场学》2023-2024学年第二学期期末试卷
- 沈阳化工大学《无机及分析化学2》2023-2024学年第二学期期末试卷
- 广安职业技术学院《小学数学解题与竞赛研究》2023-2024学年第二学期期末试卷
- 资金补助合同范本
- Unit 1 Past and Present Welcome to the Unit 教学设计 2024-2025学年牛津译林版八年级英语下册
- 如何在本机上架设服务器
- 一年级写字下学期课件(PPT 38页)
- 《实用日本语应用文写作》全套电子课件完整版ppt整本书电子教案最全教学教程整套课件
- 怎样处理课堂突发事件
- 采矿学课程设计-隆德煤矿1.8Mta新井开拓设计
- 中药药剂学讲义(英语).doc
- 【课件】Unit1ReadingforWriting课件高中英语人教版(2019)必修第二册
- Q∕GDW 10799.6-2018 国家电网有限公司电力安全工作规程 第6部分:光伏电站部分
- 滴灌工程设计示例
- 配套模块an9238用户手册rev
- 医院室外管网景观绿化施工组织设计
评论
0/150
提交评论