武汉纺织大学《数据结构》实验报告1
更新时间:2024-06-13 20:11:02 阅读量: 综合文库 文档下载
武汉纺织大学《数据结构》实验报告
班级: 级 管工类 专业 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 {
} } }
四、实验收获和建议:
通过这次实验,完成了三个具体的操作任务,对课堂上学到的知识有了进一步的了解,虽然有些地方还不是很懂,通过与其他同学的交流,更深入的理解了线性表,串,栈,队列的相关学习内容
正在阅读:
武汉纺织大学《数据结构》实验报告106-13
南京市2012年高三第一次模拟考试(word版有答案)03-29
基础性地理国情监测数据技术规定-20160801试行-V2.205-10
2017高考地理(湘教版)大一轮复习讲义Word文档:必修Ⅰ 第5章 自03-08
7上(U1-U2)课课堂作业试卷 最终01-15
传热实验06-04
《眼镜定配工职业资格培训教程》专业书10-20
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 数据结构
- 武汉
- 实验
- 纺织
- 报告
- 大学
- 一二级技术交底
- 在全乡绿化和环境卫生综合整治动员大会上的总结讲话
- 研究主题
- 静净敬竟--班级文化建设创意
- 2016尔雅大学生职业生涯规划课后答案
- 法蕾雅竹纤维必赢的5大理由和10大优势
- 新课标九年级数学中考复习强效提升分数精华版 第二轮复习 - --化
- 2019届高三理科数学测试卷(二)附答案
- 关于下发李沧区中小学20062007学年度第二学期各学
- 最美“公益”女工孙影的故事
- 八年级上册地理填图复习2014空白
- 2015年杭州中考科学二模试卷
- 平行和垂直优秀说课稿
- 企业电气系统及作业培训讲义
- 机电安装施工组织设计方案
- 高中数学必修1—必修5学业水平考试复习题及答案
- 组织行为学复习
- 奥鹏教育远程油田化学答案
- 工程热力学(第五版_)课后习题答案
- 范文-张萌论文2010-04-28