数据结构课题设计模版.docx

上传人:b****5 文档编号:28786352 上传时间:2023-07-19 格式:DOCX 页数:12 大小:190.18KB
下载 相关 举报
数据结构课题设计模版.docx_第1页
第1页 / 共12页
数据结构课题设计模版.docx_第2页
第2页 / 共12页
数据结构课题设计模版.docx_第3页
第3页 / 共12页
数据结构课题设计模版.docx_第4页
第4页 / 共12页
数据结构课题设计模版.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

数据结构课题设计模版.docx

《数据结构课题设计模版.docx》由会员分享,可在线阅读,更多相关《数据结构课题设计模版.docx(12页珍藏版)》请在冰豆网上搜索。

数据结构课题设计模版.docx

数据结构课题设计模版

 

《数据结构》课程设计报告

学院(系):

计算机学院

班级:

0738-3

学生姓名:

王维学号10703080326

指导教师:

刘洁

时间:

从2009年1月5日到2009年1月9日

一、课程设计概述:

本次数据结构课程设计共完成三个题:

背包问题的求解、内部排序算法的性能分析、停车厂模拟管理程序的设计与实现。

使用语言:

Java

编译环境:

JCreator

二、课程设计题目一

[实验内容]

背包问题的求解

[问题描述]

假设有一个能装入总体积为T的背包和n件体积分别为w1,w2,…,wn的物品,能否从n件物品中挑选若干件恰好装满背包,即使w1+w2+…+wn=T,要求找出所有满足上述条件的解。

例如:

当T=10,各件物品的体积{1,8,4,3,5,2}时,可找到下列4组解:

(1,4,3,2)(1,4,5)(8,2)(3,5,2)。

[需求分析]

(1)先将物品排成一列,然后顺序选取物品装入背包。

(2)假设已选取了前i件物品之后背包还没有装满,则继续选取第i+1件物品。

(3)若该件物品"太大"不能装入,则弃之而继续选取下一件,直至背包装满为止。

(4)但如果在剩余的物品中找不到合适的物品以填满背包,则说明"刚刚"装入背包的那件物品“不合适”,应将它取出“弃之一边”,继续再从“它之后”的物品中选取。

(5)如此重复,直至求得满足条件的解,或者无解。

[概要设计]

publicstaticvoidsolve(intT,intw[])throwsException{}//背包问题求解的函数

[存储结构]

用Stack存储

[流程图]

[详细设计]

intcount=0;//计算方案个数

intsum=0;//已加入背包总和

intm[]=newint[10];//回溯法记录下标的数组

intk=0;//数组的下标

booleanb=false;//是否找到解决方案

关键代码:

for(inti=0;i

if((sum+w[i])

if(i==w.length-1){

i=m[s.size()-1];

sum-=w[i];

s.pop();

k--;

}

else{

s.push(newInteger(w[i]));

sum+=w[i];

m[k++]=i;

}

}

elseif((sum+w[i])==T){

b=true;

s.push(newInteger(w[i]));

System.out.println("\t**********************");

System.out.println("\t解决方案:

");

for(intj=0;j

System.out.print("\t");

System.out.print(""+s.get(j));

}

count++;

System.out.println("\t第"+count+"种解决方案");

i=m[s.size()-2];

sum-=w[i];

s.pop();

s.pop();

k--;

}elseif((i==(w.length-1))&&((sum+w[i])>T)){

i=m[s.size()-1];

sum-=w[i];

s.pop();

k--;

}

}

[运行结果及分析]

结果分析:

运行时从键盘输入背包体积和物品的单个体积。

将显示出可行的方法分配和总共可行的方法种数。

 

课程设计题目二:

[实验内容]

内部排序算法的性能分析

[问题描述]

设计一个测试程序比较几种内部排序算法的关键字比较次数和移动次数以取得直观感受。

[需求分析]

(1)对起泡排序、直接排序、简单选择排序、快速排序、希尔排序、堆排序算法进行比较;

(2)待排序表的表长不小于100,表中数据随机产生,至少用5组不同数据作比较,比较指标有:

关键字参加比较次数和关键字的移动次数(关键字交换记为3次移动);

(3)输出比较结果。

[概要设计]

privatelongbubbleSort(int[]arra){}//冒泡排序

privatelonginsertSort(int[]a){}//直接插入排序

privatelongchoseSort(inta[]){}//直接选择排序

privatelongquickSort(inta[],intlow,inthigh){}//快速排序

publiclongshellSort(int[]a,int[]d,intnumOfD){}//希尔排序

publicstaticvoidcreateHeap(int[]a,intn,inth){}//堆排序

[存储结构]

数组

[流程图]

[详细设计]

booleanflag=true;//是否继续

inta[]=newint[4000];//初始化数组

intk,high=0;//k是产生的随机个数,high是快速排序的参数

intnumOfD=3;//希尔排序的参数

intd[]={50,25,1};//希尔排序的参数

[运行结果及分析]

结果分析:

每个排序所用的时间

课程设计题目三

[实验内容]

停车厂模拟管理程序的设计与实现

[问题描述]

设停车厂只有一个可停放几辆汽车的狭长通道,且只有—个大门可供汽车进出。

汽车在停车场内按车辆到达的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车场为它让路,待该车辆开出大门,为它让路的车辆再按原次序进入车场。

在这里假设汽车不能从便道上开走,试设汁这样一个停车厂模拟管理程序。

为了以下描述的方便,停车厂的停车场用“停车位”进行叙述,停车厂的便道用“便道”进行叙述。

[需求分析]

本程序从总体上分为4个大的功能模块,分别为:

程序功能介绍和操作提示模块、汽车进入停车位的管理模块、汽车离开停车位的管理模块、查看停车厂状态的查询模块。

[概要设计]

有"1.入口停车2.显示停车信息3.车辆离开4.退出系统"几种功能

[存储结构]Stack堆栈

[流程图]

[详细设计]

switch(i){

case1:

{

System.out.println("请输入车牌号:

");

BufferedReaderbrs=newBufferedReader(newInputStreamReader(System.in));

Stringcar=brs.readLine();

myStack.push(car);sum++;

if(sum<=5){

System.out.println("牌照为"+car+"的车进入第"+myStack.size()+"车道");

}

else{

System.out.println("牌照为"+car+"的车进入第"+(myStack.size()%5)+"便道");

}

break;

}

case2:

{

System.out.println("******停车场信息*******");

for(intj=0;j

if(j<5)

System.out.println("牌照为"+myStack.get(j)+"在第"+(j+1)+"车");

else{

System.out.println("牌照为"+myStack.get(j)+"在第"+((j+1)%5)+"便道");

}

}

System.out.println("***********************");break;

}

case3:

{

System.out.println("请输入排在第几位的车出来");

BufferedReaderbrj=newBufferedReader(newInputStreamReader(System.in));

intj=Integer.parseInt(br.readLine());

System.out.println("第"+j+"车位的车已经出来");

intn=myStack.size();

for(intk=j-1;k

chun[k]=myStack.pop();

}

for(intm=n-1;m>=j;m--){

myStack.push(chun[m-1]);

}

break;

}

case4:

{

flag=false;

System.exit(0);

}

default:

System.out.println("inputerror!

");

}

[运行结果及分析]

结果分析:

JA001-----JA007先进入车道,由于只有5个车道,JA006,JA007只能在第一,二便道,然后第三车位的车辆离开,后面的车依次上来,则如显示结果。

4,为退出系统,正常退出系统

三、心得体会

通过这次课程设计,使我了解到数据结构的很多知识,同时也认识到自己很多方面的不足,刚拿到题目时,题目都不太懂,经过一直地研究与先找别人的代码端详,再自己完成,这是一个学习别人的过程,同时也是自己提升的过程,我希望以后自己能早别人一步,这样做起课程设计来,会比较得心应手,而且课程设计是这门课的综合应用。

学到的知识不只是要记住,更应该是应用与扩展。

四、参考文献

[1]朱站立.数据结构——java语言描述.2005年12月北京清华大学出版社

[2]胡伏湘,雷军环.Java程序设计实用教程.2005年7月北京清华大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1