武汉纺织大学数据结构实验报告1.doc
- 文档编号:85921
- 上传时间:2022-10-02
- 格式:DOC
- 页数:8
- 大小:100.50KB
武汉纺织大学数据结构实验报告1.doc
《武汉纺织大学数据结构实验报告1.doc》由会员分享,可在线阅读,更多相关《武汉纺织大学数据结构实验报告1.doc(8页珍藏版)》请在冰豆网上搜索。
武汉纺织大学《数据结构》实验报告
班级:
信管专业班姓名:
序号:
实验时间:
年月日指导教师:
实验一:
线性结构的基本操作
一、实验目的:
1、熟悉Java上机环境,掌握Java语言编程方法,熟练运用Java语言实现数据结构设计和算法设计。
2、掌握线性表的顺序存储结构和链式存储结构的定义与基本操作,并能用Java语言实现线性表基本功能。
3、掌握栈、队列的存储结构与基本操作,并能利用该结构编写算法解决实际问题。
4、掌握数组的存储结构与基本操作,并能利用该结构编写算法解决实际问题。
二、实验内容:
1、编写一个Java语言程序,利用线性表实现约瑟夫环问题,参考书本程序示例【例2.1】,完善该程序并运行。
实验步骤:
①、在Java编辑环境中新建程序,根据【例2.1】输入完整程序内容,并保存和编译;
②、运行程序,输入约瑟夫环长度number、起始位置start、计数值distance;
③、依次输入约瑟夫环中number个数据元素;
④、输出约瑟夫环执行过程。
2、编写一个程序,利用栈解决递归问题,实现n阶Hanoi塔问题。
实验步骤:
①、在Java编辑环境中新建程序,输入n阶Hanoi塔程序内容,并保存和编译;
②、运行程序,输入盘子数目n。
③、输出n阶Hanoi塔问题解决过程。
参考程序如下:
importjava.util.Scanner;
publicclassMethodOfHanoi{
publicstaticvoidmain(String[]args){
System.out.println(“请输入盘子数目:
”);
Scannerscan=newScanner(System.in);//输入盘子数目
intnumber=scan.nextInt();
hanoi(number,‘A’,‘B’,‘C’);//调用hanoi方法
}
publicstaticvoidhanoi(intnum,chara,charb,charc){
if(num==1)//只有一个盘子,直接移动
{
move(a,c);
}else{
hanoi(num-1,a,c,b);//递归调用
move(a,c);
hanoi(num-1,b,a,c);//递归调用
}
}
publicstaticvoidmove(chara,charc)//移动过程方法
{
System.out.println("从"+a+"移到"+c);
}}
3、编写一个程序,利用Java语言建立一个空队列,如果输入奇数,则奇数入队列;如果输入偶数,则队列中的第一个元素出队列;如果输入0,则退出程序。
实验步骤:
①、在Java编辑环境中新建程序,输入程序内容,并保存和编译;
②、运行程序,输入数据并进行相应队列操作。
③、输出每次输入数据后的队列结果。
4、编写程序,利用数组解决以下实际问题(二选一)
(1)、如果矩阵A中存在这样的一个元素A[i][j],满足条件:
A[i][j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。
试编写程序计算出m*n矩阵A的所有马鞍点。
实验步骤:
①、在Java编辑环境中新建程序,输入完整程序内容,并保存和编译;
②、运行程序,输入数组行数m和列数n;
③、依次输入数组各个数据元素;
④、输出鞍点求取结果。
(2)、编写程序以构造一个n阶魔阵。
所谓魔阵是这样的一个方阵,它的每一行、每一列和对角线之和均相等,例如3阶魔阵为:
816
357
492
解决方法如下:
(1)、将1放在第一行中间一列;
(2)、从2开始直到n×n为止,各数依次按照下列规则存放:
每一个数存放的行比前一个数的行数减1,列数加1;
(3)、如果上一个数的行数为1,则下一个数的行数为n(指最下一行);
(4)、当上一个数的列数为n时,下一个数的列数应为1,行数减1;
(5)、如果按照上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。
实验步骤:
①、在Java编辑环境中新建程序,输入完整程序内容,并保存和编译;
②、运行程序,输入n值;
③、输出n阶魔阵。
三、操作步骤:
1、编写一个Java语言程序,利用线性表实现约瑟夫环问题
程序代码:
packagezy;
publicclassJosephus{
publicJosephus(intnumber,intstart,intdistance){
SeqList
for(inti=0;i list.append((char)('A'+i)+""); System.out.print("约瑟夫环("+number+","+start+","+distance+"),"); System.out.println(list.toString()); inti=start; while(list.length()>1){ i=(i+distance-1)%list.length(); System.out.print("删除"+list.remove(i).toString()+","); System.out.println(list.toString()); } System.out.println("幸存者是"+list.get(0).toString()); } publicstaticvoidmain(Stringargs[]){ newJosephus(5,0,2); } } publicclassSeqList 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;} } publicinterfaceLList booleanisEmpty(); intlength(); Tget(inti); voidset(inti,Tx); voidinsert(inti,Tx); voidappend(Tx); Tremove(inti); voidremoveAll(); } 运行结果: 2、编写一个程序,利用栈解决递归问题,实现n阶Hanoi塔问题 程序代码: packagezy; importjava.util.Scanner; publicclassMethodOfHanoi{ publicstaticvoidmain(String[]args){ System.out.println("请输入盘子的数目: "); Scannerscan=newScanner(System.in); intnumber=scan.next
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 武汉 纺织 大学 数据结构 实验 报告