数据结构上机作业顺序表.docx
- 文档编号:5143856
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:25
- 大小:693.64KB
数据结构上机作业顺序表.docx
《数据结构上机作业顺序表.docx》由会员分享,可在线阅读,更多相关《数据结构上机作业顺序表.docx(25页珍藏版)》请在冰豆网上搜索。
数据结构上机作业顺序表
数据结构上机作业——顺序表
一、实验目的
理解线性表的逻辑结构、顺序存储结构和数据操作,熟练运用Java语言实现线性表的基本操作,分析各种操作算法特点和时间复杂度。
熟悉JCreator调试程序的方法。
二、主要内容
1、按照教材P37编写顺序表类,在SeqList中增加main方法或者编写一个测试类测试各方法的正确性。
说明:
注意package路径,导入LList,过程参考如下:
1)创建工程:
File->New->Project,选择EmptyProject,输入工程名称及路径,点击完成。
2)鼠标指向工程ds,单击鼠标右键,在快捷菜单中选择Add->NewFolder,新建文件夹dataStructure,在dataStructure新建文件夹linearList。
3)鼠标指向文件夹linearList,单击鼠标右键,在快捷菜单中选择AddExistingFiles,选择LList.java(教育在线例程中)。
4)鼠标指向文件夹linearList,单击鼠标右键,,在快捷菜单中选择NewClass,在ClassWizard中输入相关内容,类名:
SeqList。
5)程序编辑结束后,执行Build->BuildFile菜单命令,编译Java程序,系统在BuildOutput区域输出错误信息,编译通过后将生成字节码文件(.class)。
6)测试:
方法1在SeqList类中增加main方法,例如
publicstaticvoidmain(Stringargs[]){
SeqList
list.add("");
list.add("");
list.add("");
list.add("");
System.out.println(list.toString());
list.add(2,"");
System.out.println(list.toString());
list.remove(3);
System.out.println(list.toString());
}
修改main方法,完成相应测试。
方法2新建一个测试类,在main方法中测试你所编写的各方法。
例如
importdataStructure.linearList.*;
importjava.util.Scanner;
publicclassSeqListTest{
publicstaticvoidmain(Stringargs[]){
SeqList
Scannerscanner=newScanner(System.in);
System.out.println("请输入线性表长度");
intn=scanner.nextInt();
System.out.println("请依次输入各元素");
inte;
for(inti=0;i e=scanner.nextInt(); list.add(newInteger(e)); } System.out.println(list.toString()); } } 修改main方法,完成相应测试。 7)运行: 执行Run->RunFile,若没有错误,系统将运行结果显示在GeneralOutput区域。 8)调试 2、在SeqList类中增加下列成员方法。 1)publicvoidconcat(SeqListlist) 说明: 将指定顺序表list链接在当前顺序表之后 测试数据: 第一组: (1,2,3,4,5),() 第二组: (),(1,2,3,4,5) 第三组: (1,2,3,4,5),(6,7,8) 2)publicbooleanremove(Telement) 说明: 移去首次出现的指定对象 测试数据: 第一组: (1,2,3,4,5),删除6 第二组: (1,2,3,4,5),删除1 第三组: (1,2,3,4,5,5),删除5 3)publicbooleanreplace(Objectobj,Telement) 说明: 将元素值为obj的结点值替换为element,若替换成功返回true,否则返回false 测试数据: 第一组: (1,2,3,4,5),将6替换为4 第二组: (1,2,3,4,5),将3替换为30 第三组: (1,2,3,4,5,5),将5替换为30 3、(选做)设计一个有序顺序表(元素已排序,递增或递减),实现插入、删除等操作,元素插入位置由其值决定。 要求: 测试数据使用一组随机数 提示: 对象比较大小方法见例1.4;可继承SeqList类 三、要求 1、上机前请先理清程序思路,复杂程序的主要算法应事先写出。 2、源程序请自己保存,以备抽查。 3、上机后一周内交上机报告,包括源程序、测试数据、运行结果和上机调试心得。 答案: 1.方法1: packagedataStructure.linearList; importjava.util.Scanner; classSeqList privateObject[]element; privateintlen; publicSeqList(intsize){ this.element=newObject[size]; this.len=0; } publicSeqList(){ this(64); } publicbooleanisEmpty(){ returnthis.len==0; } publicintlength(){ returnthis.len; } publicTget(inti){ if(i>=0&&i return(T)this.element[i]; returnnull; } publicvoidset(inti,Tx){ if(x==null) return; if(i>=0&&i this.element[i]=x; else thrownewIndexOutOfBoundsException(i+""); } publicStringtoString(){ Stringstr="("; if(this.len>0) str+=this.element[0].toString(); for(inti=1;i str+=","+this.element[i].toString(); returnstr+")"; } publicvoidinsert(inti,Tx){ if(x==null) return; if(this.len==element.length){ Object[]temp=this.element; this.element=newObject[temp.length*2]; for(intj=0;j this.element[j]=temp[j]; } if(i<0) i=0; if(i>this.len) i=this.len; for(intj=this.len-1;j>=i;j--) this.element[j+1]=this.element[j]; this.element[i]=x; this.len++; } publicvoidappend(Tx){ insert(this.len,x); } publicTremove(inti){ if(this.len==0||i<0||i>=this.len) returnnull; Told=(T)this.element[i]; for(intj=i;j this.element[j]=this.element[j+1]; this.element[this.len-1]=null; this.len--; returnold; } publicvoidremoveAll(){ this.len=0; } publicstaticvoidmain(Stringargs[]){ SeqList list.append(""); list.append(""); list.append(""); list.append(""); System.out.println(list.toString()); list.insert(2,""); System.out.println(list.toString()); list.remove(3); System.out.println(list.toString()); } } 运行结果: --------------------Configuration: ds-JDKversion1.6.0_31 (,,,) (,,,,) (,,,) Processcompleted. 方法2: packagedataStructure.linearList; importjava.util.Scanner; classSeqListTest privateObject[]element; privateintlen; publicSeqListTest(intsize){ this.element=newObject[size]; this.len=0; } publicSeqListTest(){ this(64); } publicbooleanisEmpty(){ returnthis.len==0; } publicintlength(){ returnthis.len; } publicTget(inti){ if(i>=0&&i return(T)this.element[i]; returnnull; } publicvoidset(inti,Tx){ if(x==null) return; if(i>=0&&i this.element[i]=x; else thrownewIndexOutOfBoundsException(i+""); } publicStringtoString(){ Stringstr="("; if(this.len>0) str+=this.element[0].toString(); for(inti=1;i str+=","+this.element[i].toString(); returnstr+")"; } publicvoidinsert(inti,Tx){ if(x==null) return; if(this.len==element.length){ Object[]temp=this.element; this.element=newObject[temp.length*2]; for(intj=0;j this.element[j]=temp[j]; } if(i<0) i=0; if(i>this.len) i=this.len; for(intj=this.len-1;j>=i;j--) this.element[j+1]=this.element[j]; this.element[i]=x; this.len++; } publicvoidappend(Tx){ insert(this.len,x); } publicstaticvoidmain(Stringargs[]){ SeqList Scannerscanner=newScanner(System.in); System.out.println("请输入线性表长度"); intn=scanner.nextInt(); System.out.println("请依次输入各元素"); inte; for(inti=0;i e=scanner.nextInt(); list.append(newInteger(e)); } System.out.println(list.toString()); } } 运行结果: --------------------Configuration: ds-JDKversion1.6.0_31 请输入线性表长度 5 请依次输入各元素 13524 (1,3,5,2,4) Processcompleted. 错误1: 错误分析: 没有声明T,所以找不到符号 错误2: 错误分析: 数组下标越界 54行处代码应为 for(intj=this.len-1;j>=i;j--) this.element[j+1]=this.element[j]; this.element[i]=x; this.len++; 错误3: 错误分析: 在调用insert方法时只填写了一个参数 而insert方法是(inti,Tx),所以此时应调用append方法 2. (1)将指定顺序表list链接在当前顺序表之后 packagedataStructure.linearList; importjava.util.Scanner; classSeqListTest privateObject[]element; privateintlen; publicSeqListTest(intsize){ this.element=newObject[size]; this.len=0; } publicSeqListTest(){ this(64); } publicbooleanisEmpty(){ returnthis.len==0; } publicintlength(){ returnthis.len; } publicTget(inti){ if(i>=0&&i return(T)this.element[i]; returnnull; } publicvoidset(inti,Tx){ if(x==null) return; if(i>=0&&i this.element[i]=x; else thrownewIndexOutOfBoundsException(i+""); } publicStringtoString(){ Stringstr="("; if(this.len>0) str+=this.element[0].toString(); for(inti=1;i str+=","+this.element[i].toString(); returnstr+")"; } publicvoidinsert(inti,Tx){ if(x==null) return; if(this.len==element.length){ Object[]temp=this.element; this.element=newObject[temp.length*2]; for(intj=0;j this.element[j]=temp[j]; } if(i<0) i=0; if(i>this.len) i=this.len; for(intj=this.len-1;j>=i;j--) this.element[j+1]=this.element[j]; this.element[i]=x; this.len++; } publicvoidappend(Tx){ insert(this.len,x); } publicstaticvoidconcat(SeqListlist,SeqListlist1){ intn=list1.length(); for(inti=0;i list1.insert(i+n,list.get(i)); } System.out.print(list1.toString()); } publicstaticvoidmain(Stringargs[]){ SeqList SeqList Scannerscanner=newScanner(System.in); list.append("1"); list.append("2"); list.append("3"); list.append("4"); list.append("5"); list1.append(7); list1.append(8); list1.append(9); concat(list1,list); } } 运行结果: --------------------Configuration: da-JDKversion1.6.0_13 (1,2,3,4,5,7,8,9) Processcompleted. 错误: 无法将dataStructure.linearList.SeqListTest this.insert(i+5,list.get(i)); 错误分析: 应将SeqList ^ (2)移去首次出现的指定对象 packagedataStructure.linearList; importjava.util.Scanner; classSeqList privateObject[]element; privateintlen; publicSeqList(intsize){ this.element=newObject[size]; this.len=0; } publicSeqList(){ this(64); } publicbooleanisEmpty(){ returnthis.len==0; } publicintlength(){ returnthis.len; } publicTget(inti){ if(i>=0&&i return(T)this.element[i]; returnnull; } publicvoidset(inti,Tx){ if(x==null) return; if(i>=0&&i this.element[i]=x; else thrownewIndexOutOfBoundsException(i+""); } publicStringtoString(){ Stringstr="("; if(this.len>0) str+=this.element[0].toString(); for(inti=1;i str+=","+this.element[i].toString(); returnstr+")"; } publicvoidinsert(inti,Tx){ if(x==null) return; if(this.len==element.length){ Object[]temp=this.element; this.element=newObject[temp.length*2]; for(intj=0;j this.element[j]=temp[j]; } if(i<0) i=0; if(i>this.len) i=this.len; for(intj=this.len-1;j>=i;j--) this.element[j+1]=this.element[j]; this.element[i]=x; this.len++; } publicvoidappend(Tx){ insert(this.len,x); } publicTRemove(inti){ if(this.len==0||i<0|
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 上机 作业 顺序