武汉纺织大学《数据结构》实验报告1
更新时间:2023-10-14 03:35:01 阅读量: 综合文库 文档下载
武汉纺织大学《数据结构》实验报告
班级: 级 管工类 专业 2 班 姓名: 序号: 1 实验时间: 2014 年 4 月 4 日 指导教师:
实验一:线性结构的基本操作
一、实验目的:
1、熟悉Java 上机环境,掌握Java语言编程方法,熟练运用Java语言实现数据结构设计和算法设计。 2、掌握线性表的顺序存储结构和链式存储结构的定义与基本操作,并能用Java语言实现线性表基本功能。
3、掌握栈、队列的存储结构与基本操作,并能利用该结构编写算法解决实际问题。
二、实验内容:
1、编写一个Java语言程序,利用线性表实现约瑟夫环问题,参考书本程序示例【例2.1】,完善该程序并运行。 实验步骤:
①、在Java编辑环境中新建程序,根据【例2.1】输入完整程序内容,并保存和编译; ②、运行程序,输入约瑟夫环长度number、起始位置start、计数值distance; ③、依次输入约瑟夫环中number个数据元素; ④、输出约瑟夫环执行过程。
2、编写一个程序,利用栈解决递归问题,实现n阶Hanoi塔问题。 实验步骤:
①、在Java编辑环境中新建程序,输入n阶Hanoi塔程序内容,并保存和编译;
②、运行程序,输入盘子数目n。
③、输出n阶Hanoi塔问题解决过程。 参考程序如下:
import java.util.Scanner; public class MethodOfHanoi{
public static void main(String[] args){ System.out.println(“请输入盘子数目:”);
Scanner scan=new Scanner(System.in); //输入盘子数目 int number=scan.nextInt();
hanoi(number,‘A’,‘B’,‘C’); //调用hanoi方法 }
public static void hanoi(int num, char a,char b,char c){
if (num==1) //只有一个盘子,直接移动 {
move(a,c); }else{
hanoi(num-1,a,c,b); //递归调用 move(a,c);
hanoi(num-1,b,a,c); //递归调用 }
} public static void move(char a,char c) //移动过程方法 {
System.out.println(\从 \移到 \
} }
3、编写一个程序,利用Java语言建立一个空队列,如果输入奇数,则奇数入队列;如果输入偶数,则队列中的第一个元素出队列;如果输入0,则退出程序。 实验步骤:
①、在Java编辑环境中新建程序,输入程序内容,并保存和编译; ②、运行程序,输入数据并进行相应队列操作。 ③、输出每次输入数据后的队列结果。
三、操作步骤: 1.代码:
import java.util.ArrayList; import java.util.List;
public class YSfh{
public YSfh(int number, int start, int distance) { List
.print(\约瑟夫环(\ + number + \ + start + \ + distance + \); System.out.print(list.toString()); int i = start;
while (list.size() > 1) {
i = (i + distance - 1) % list.size();
System.out.print(\删除\ + list.remove(i).toString() + \); System.out.print(list.toString()); }
System.out.print(\被赦免者是\ + list.get(0).toString());
}
public static void main(String args[]) { new YSfh(5, 0, 2); } }
运行结果:
2.代码:
import java.util.Scanner; public class MethodOfHanoi{
public static void main(String[] args){ System.out.println(\请输入盘子数目:\);
Scanner scan=new Scanner(System.in); //输入盘子数目 int number=scan.nextInt();
hanoi(number,'A','B','C'); }
public static void hanoi(int num, char a,char b,char c){ if (num==1) //只有一个盘子,直接移动 {
move(a,c); }else{
hanoi(num-1,a,c,b); //递归调用 move(a,c);
hanoi(num-1,b,a,c); //递归调用
}
} public static void move(char a,char c) //移动过程方法 {
System.out.println(\从 \+a+\移到 \+c); } }
运行结果:
3.代码
QQueue.java
public interface QQueue
boolean isEmpty(); boolean enqueue(T x); T dequeue();
SeqQueue.java
public class SeqQueue
public SeqQueue(int length) {
if (length < 64)
length = 64;
this.element = new Object[Math.abs(length)]; private Object element[]; private int front, rear;
this.front = this.rear = 0;
}
public SeqQueue() { this(64);
}
public boolean isEmpty() { return this.front == this.rear; }
public boolean enqueue(T x) { if (x == null) return false;
if (this.front == (this.rear + 1) % this.element.length) { Object[] temp = this.element;
this.element = new Object[temp.length * 2]; int i = this.front, j = 0; while (i != this.rear) { this.element[j] = temp[i]; i = (i + 1) % temp.length; j++;
}
this.front = 0; this.rear = j; return true;
}
this.element[this.rear] = x;
this.rear = (this.rear + 1) % this.element.length; return true;
}
public T dequeue() { if (isEmpty())
return null;
T temp = (T) this.element[this.front];
this.front = (this.front + 1) % this.element.length; return temp; }
public String toString() { String str = \; if (!isEmpty()) { str += this.element[this.front].toString(); int i = (this.front + 1) % this.element.length; while (i != this.rear) { str += \ + this.element[i].toString(); i = (i + 1) % this.element.length;
}
}
}
}
return str + \;
ts3.java
import java.util.Scanner;
public class ts3{
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
SeqQueue
while(num != 0) {
num = in.nextInt();
if (num % 2 == 0) { }
System.out.println(\当前队列:\ + queue.toString())
if (queue.dequeue() == null) {
System.out.println(\当前队列为空!\);
}
if (!queue.enqueue(num)) {
System.out.println(\当前队列满!\); }
} else {
} } }
四、实验收获和建议:
通过这次实验,完成了三个具体的操作任务,对课堂上学到的知识有了进一步的了解,虽然有些地方还不是很懂,通过与其他同学的交流,更深入的理解了线性表,串,栈,队列的相关学习内容
正在阅读:
武汉纺织大学《数据结构》实验报告110-14
【压轴题】2015年安徽省高考仿真题 文科综合 Word版含答案05-30
三年级语文课外阅读教案 - 图文07-04
模拟电子技术基础考试试题答案(1)12-23
大纲格式02-19
县文旅体局上半年工作总结和下半年工作安排08-04
风会记得一朵花的香读后感02-27
医患沟通培训测试03-04
时代光华视频讲座学习体会和感受01-26
五香牛肉干加工工艺05-25
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 数据结构
- 武汉
- 实验
- 纺织
- 报告
- 大学
- 南京大学出版基础会计学课后答案 doc
- 学习礼拜
- 第3讲 实内积空间
- 原子层沉积和化学气相沉积有什么不同
- 主办单位阳东一中团委协办单位阳东一中体育
- 优秀技能人才事迹谢杰
- 集成电路封装中的引线键合技术
- 无疑而问,激趣阅读
- 市场部实习,项目跟进实习报告
- 第6章消化系统 - 图文
- 宝来1.8T - 01M自动变速器结构原理及故障分析 - 图文
- 刘小明-《孔乙己》的艺术特色
- 完整5200开局步骤(附 版本及测试手册)
- 世纪金榜 2015最新版高中语文选修外国小说欣赏 课时达标·效果检测 7 ﹡礼拜二午睡时刻
- 五大员考试题库
- A3-B6-C24-6金华中学教职工代表大会制度
- 5米深沟槽开挖安全施工方案-精品合集
- 《桃花源记》练习卷及答案
- 2018年宜家供应链管理和营销模式分析
- 现代汉语试题库