当前位置:文档之家› 辽宁工程技术大学综合训练项目任务书一(数据结构)

辽宁工程技术大学综合训练项目任务书一(数据结构)

辽宁工程技术大学综合训练项目任务书一(数据结构)
辽宁工程技术大学综合训练项目任务书一(数据结构)

软件学院

综合训练项目报告书

课程名称数据结构

项目名称运动会分数统计

专业班级软件14届1班

组别 3

成员业宏扬孝瀚岩

任课教师宁

目录

1设计时间 (1)

2设计任务 (1)

3设计容 (1)

3.1问题分析 (1)

3.2程序设计 (2)

3.2.1数据类型的定义 (2)

3.2.2主程序的流程 (3)

3.2.3函数与类调用关系说明 (3)

3.2.4主要函数伪代码 (4)

3.3测试与分析 (4)

3.3.1测试 (4)

3.3.2分析 (6)

3.4代码 (6)

4 总结与展望 (13)

参考文献 (14)

成绩评定 (15)

再次录入数据,选1 项目号选2

前名次数选5

输入

三 1 1

四 2 2

王五 1 3

六 1 4

侯七 3 5

再次输入2

输出如下:

输入3

男子总项目输入为1

输出如下:

即测试成功(以上王五四三为同名男女)

3.3.2分析

1.调试过程中发现最后一个节点没有数据,因此查看代码发现最后一个节点被跳过了。

2.算法的空间复杂度相对较大,构思是否能够用更简便的方法。

3.4 代码

#include

#include

#include

typedef struct Student//student节点

{

int xmid;

int headnum;

数据结构实验指导书

《数据结构》实验指导书 实验一顺序表 实验目的: 熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作。 实验要求: 了解并熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作的实现和应用。 实验内容: 1、编写程序实现在线性表中找出最大的和最小的数据元素,并符合下列要求: (1)设数据元素为整数,实现线性表的顺序存储表示。 (2)从键盘输入10个数据元素,利用顺序表的基本操作建立该表。 (3)利用顺序表的基本操作,找出表中最大的和最小的数据元素(用于比较的字段为整数)。 2、编写一个程序实现在学生成绩中找出最高分和最低分,并符合下列要求: (1)数据元素为学生成绩(含姓名、成绩等字段)。 (2)要求尽可能少地修改第一题的程序来得到此题的新程序,即要符合第一题的所有要求。(这里用于比较的字段为分数) 实验二链表 实验目的: 熟悉链表的逻辑特性、存储表示方法的特点和链式表的基本操作。 实验要求: 了解并熟悉链式表的逻辑特性、存储表示方法和链式表的基本操作的实现和应用。

实验内容: 1、编写一个程序建立存放学生成绩的有序链表并实现相关操作,要求如下: (1)设学生成绩表中的数据元素由学生姓名和学生成绩字段组成,实现这样的线性表的链式存储表示。 (2)键盘输入10个(或若干个,特殊数据来标记输入数据的结束)数据元素,利用链表的基本操作建立学生成绩单链表,要求该表为有序表 并带有头结点。(用于比较的字段为分数)。 (3)输入关键字值x,打印出表中所有关键字值<=x的结点。(用于比较的关键字字段为分数)。 (4)输入关键字值x,删除表中所有关键字值<=x的结点。(用于比较的关键字字段为分数)。 (5)输入关键字值x,并插入到表中,使所在的链表仍为有序表。(用于比较的字段为分数)。 实验三栈的应用 实验目的: 熟悉栈的逻辑特性、存储表示方法和栈的基本操作。 实验要求: 了解并熟悉栈的逻辑特性、顺序和链式存储表示方法和栈的基本操作的实现和应用。 实验内容: (1)判断一个表达式中的括号(仅有一种括号,小、中或大括号) 是否配对。编写并实现它的算法。 (2)用不同的存储方法,求解上面的问题。 (3)* 若表达式中既有小括号,又有大括号(或中括号),且允许 互相嵌套,但不能交叉,写出判断这样的表达式是否合法的算 法。如 2+3*(4-{5+2}*3)为合法;2+3*(4-{5+2 * 3} 、 2+3*(4-[5+2 * 3)为不合法。

2019辽宁工程技术大学成人高考招生简章

2019辽宁工程技术大学成人高考招生简章 一、学院简介 辽宁工程技术大学创建于1949年,是一所具有六十多年悠久历史的国家重点大学。新中国成立前夕,为恢复生产、发展经济、支援解放全中国,经东北人民政府批准,分别成立了阜新工科高级职业学校、抚顺工科高级职业学校、鹤岗工科高级职业学校、鸡西煤矿工业学校以及东北煤矿工人速成学校。1958年,在这些学校的基础上,分别成立了阜新煤矿学院、抚顺煤矿学院、鸡西矿业学院和辽宁煤矿师范学院。六十年代初期院校调整,四校合并,校址选于辽宁省阜新市,定名为阜新煤矿学院,成为东北地区唯一一所煤炭高等院校。1978年学校更名为阜新矿业学院。1996年学校更名为辽宁工程技术大学。1998年学校由原煤炭工业部划归辽宁省人民政府管理,实行中央与地方共建、以地方管理为主的体制。1999、2000年,原阜新工业学校、辽宁电子计算机学校和辽宁省财政学校先后并入学校。现设有25个学院、67个本科专业。在册学生3.2万余人,其中全日制在校博士生、硕士生、本科生、留学生2.6万余人。 二、报名条件 报考高中起点升专科的考生应具有高中、中专或同等学历;报考专科起点升本科的考生须具有国民教育系列大学专科(含高职)以上毕业证书。三、入学考试 考生须参加2019年全国成人高等教育招生统一入学考试。 考试时间:2019年10月 四、考试科目

五、招生专业及学费 高升专2.5年制2200学费:计算机及应用技术、建筑工程技术、道路桥梁工程技术、电气自动化技术、煤矿开采技术、矿物加工技术、矿山地质、矿井通风与安全、工程测量技术、矿山机电、机械制造与自动化、焊接技术及自动化、数控技术、机电一体化技术、汽车检测与维修技术、物业管理、会计电算化、经济管理、市场营销、人力资源管理、物流管理、旅游管理、法律事务、影视动画 高升本5年制2200学费:电气工程及其自动化、土木工程、机械工程及其自动化、采矿工程高升本5 函授高中起点升大专、通信工程、工商管理、会计学 专升本2.5年制2200学费:计算机科学与技术、电气工程及其自动化、机械工程及自动化、土木工程、给水排水工程、测绘工程、采矿工程、矿物加工工程、地质工程、环境工程、安全工程、通信工程、会计学、工商管理、

数据结构实验指导书2014(1)

《数据结构》实验指导书 专业:____________班级:_______________组序:_____________ 学号:______________姓名:_______________ 中国矿业大学管理学院 2014 年9 月

上篇程序设计基础 实验一 Java编程环境 【实验目的】 1.掌握下载Java sdk软件包、Eclipse软件的安装和使用方法 2.掌握设置Java程序运行环境的方法 3.掌握编写与运行Java程序的方法 4.了解Java语言的概貌 【实验内容】 一 JDK下载与安装 1. 下载JDK 为了建立基于SDK的Java运行环境,需要先下载免费SDK软件包。SDK包含了一整套开发工具,其中包含对编程最有用的是Java编译器、Applet查看器和Java解释器。下载链接 https://www.doczj.com/doc/e611222941.html,。 2.安装SDK 运行下载的JDK软件包,在安装过程中可以设置安装路径及选择组件,默认的组件选择是全部安装,安装成功后,其中bin文件夹中包含编译器(javac.exe)、解释器(java.exe)、Applet查看器(appletviewer.exe)等可执行文件,lib文件夹中包含了所有的类库以便开发Java程序使用,demo文件夹中包含开源代码程序实例。 安装成功后,文件和子目录结构如图1所示。其中bin文件夹中包含编译器(javac.exe)、解释器(java.exe)、Applet查看器(appletviewer.exe)等可执行文件,lib文件夹中包含了所有的类库以便开发Java程序使用,sample文件夹包含开源代码程序实例,src压缩文件中包含类库开源代码。 图1 二.设置环境变量

《数据结构》实验指导书

《数据结构》实验指导书 实验类别:课内实验实验课程名称:数据结构 实验室名称:软件工程实验室实验课程编号:N02070601 总学时:64 学分: 4 适用专业:计算机科学与技术、网络工程、物联网工程、数字媒体专业 先修课程:计算机科学导论、离散数学 实验在教学培养计划中地位、作用: 数据结构是计算机软件相关专业的主干课程,也是计算机软硬件专业的重要基础课程。数据结构课程实验的目的是通过实验掌握数据结构的基本理论和算法,并运用它们来解决实际问题。数据结构课程实验是提高学生动手能力的重要的实践教学环节,对于培养学生的基本素质以及掌握程序设计的基本技能并养成良好的程序设计习惯方面发挥重要的作用。 实验一线性表的应用(2学时) 1、实验目的 通过本实验,掌握线性表链式存储结构的基本原理和基本运算以及在实际问题中的应用。 2、实验内容 建立某班学生的通讯录,要求用链表存储。 具体功能包括: (1)可以实现插入一个同学的通讯录记录; (2)能够删除某位同学的通讯录; (3)对通讯录打印输出。 3、实验要求 (1)定义通讯录内容的结构体; (2)建立存储通讯录的链表结构并初始化; (3)建立主函数: 1)建立录入函数(返回主界面) 2)建立插入函数(返回主界面) 3)建立删除函数(返回主界面) 4)建立输出和打印函数(返回主界面) I)通过循环对所有成员记录输出 II)输出指定姓名的某个同学的通讯录记录 5)退出 实验二树的应用(2学时) 1、实验目的 通过本实验掌握二叉排序树的建立和排序算法,了解二叉排序树在实际中的应用并熟练运用二叉排序树解决实际问题。 2、实验内容 建立一个由多种化妆品品牌价格组成的二叉排序树,并按照价格从低到高的顺序 打印输出。 3、实验要求 (1)创建化妆品信息的结构体; (2)定义二叉排序树链表的结点结构; (3)依次输入各类化妆品品牌的价格并按二叉排序树的要求创建一个二叉排序树链表;(4)对二叉排序树进行中序遍历输出,打印按价格从低到高顺序排列的化妆品品牌信息。 实验三图的应用(2学时)

数据结构实训报告

《数据结构与算法分析》 课程设计 题目:文字处理程序(字符串的应用) 学生姓名:林武祥 学号:16230243008 专业班级: B16软件工程1班 指导教师:颜慧 学院: 大数据与计算机学院 2017年12月

目录 一、课程设计题目 (1) 二、开发背景 (1) 三、项目总体设计 (1) 3.1需求分析 (1) 3.2系统功能模块设计 (1) 四、详细实现步骤和流程图 (2) 4.1功能实现展示 (2) 4.2流程图框架 (4) 五、部分具体代码分析及实现 (5) 六、项目总结 (9) 七、参考文献 (9)

一、课程设计题目 文字处理程序(字符串的应用)及简单文本编辑器 二、开发背景 由于对于现在的电脑族对电脑的使用频率逐年增大,对电脑的需要具有依赖性。其中不乏有对文本的编辑的需求,因此,本次实训周做了一款简单的文本编辑器的应用程序,对文本编辑器的相关功能做了一定的实现,既简单又实用。 本软件为一个简单而且很实用的文本编辑的工具,不但可以进行一些文字的输入和文本的读取,而且,该文本编辑器也可以对文本进行一些保存、另存、剪切、粘贴、删除等常规的操作,是一款比较适合广大普通用户和非计算机专业的用户和文本编辑的处理软件,本软件不但界面友好,功能齐全,而且操作简单。 三、项目总体设计 3.1需求分析 文字处理程序运行后弹出文本编辑器的主界面,由键盘输入或以打开的方式输入或显示文本文件内容。其中程序基本操作:包括文本的复制、粘贴、剪切、删除、查找、替换等功能。统计功能:分别统计出文本文件中的各类字符的个数,包括英文字母个数、空格个数、汉字个数、标点符号个数、总字数等并显示统计信息;允许用户统计某一字符串在文章中出现的次数,并显示统计信息;加密和解密:用户可对指定文本文件进行加密和解密操作;用户可保存该文件。 3.2系统功能模块设计

数据结构实验报告

数据结构实验报告 一.题目要求 1)编程实现二叉排序树,包括生成、插入,删除; 2)对二叉排序树进行先根、中根、和后根非递归遍历; 3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么? 二.解决方案 对于前三个题目要求,我们用一个程序实现代码如下 #include #include #include #include "Stack.h"//栈的头文件,没有用上 typedefintElemType; //数据类型 typedefint Status; //返回值类型 //定义二叉树结构 typedefstructBiTNode{ ElemType data; //数据域 structBiTNode *lChild, *rChild;//左右子树域 }BiTNode, *BiTree; intInsertBST(BiTree&T,int key){//插入二叉树函数 if(T==NULL) { T = (BiTree)malloc(sizeof(BiTNode)); T->data=key; T->lChild=T->rChild=NULL; return 1; } else if(keydata){ InsertBST(T->lChild,key); } else if(key>T->data){ InsertBST(T->rChild,key); } else return 0; } BiTreeCreateBST(int a[],int n){//创建二叉树函数 BiTreebst=NULL; inti=0; while(i

赵丽娟 - 辽宁工程技术大学机械工程学院

赵丽娟:教授,工学博士,博士生导师。辽宁省高层次科技专家库专家、高等教育“十二五”规划教材机械学科编审委员会委员、东北三省互换性与测量技术研究会理事、辽宁工程技术大学机械制造及其自动化学科带头人、机电液系统的仿真与应用研究方向学术带头人,促进阜新市经济转型科技行动专家。 学科领域:机械工程 研究方向:1、现代机械设计理论与方法; 2、机电液系统设计与仿真; 学术专长(标签):1、采掘机械动态可靠性研究与性能优化; 2、复杂机电液控一体化系统的建模方法与可靠性研究; 先后主持完成辽宁省教育厅高等学校创新团队项目“掘进机器人多领域建模及其关键技术研究”、大型工矿装备实验研究中心开放基金“磨蚀理论研究及磨蚀系数测定装置的智能化开发”及企业委托项目“含硫化铁结核薄煤层采矿机截割部可靠性研究”(保证了全国首例富含硬结核体的薄煤层采煤机的成功研制,使复杂煤层赋存条件下的薄煤层实现综采成为可能)、“悬臂式掘进机设计中虚拟样机技术的开发应用”、“中煤南梁煤矿煤层可刨性及刨煤机可靠性研究”、“矿用减速器动态仿真系统的研究开发”、“采煤机滚筒、纵轴式掘进机截割头辅助设计及载荷计算软件开发”、“易维护SL1000型采煤机摇臂计算机仿真模拟分析”、“冷连轧机液压压下系统的建模方法与振动控制”等20余项,主持“基于VP与VI的控制工程虚拟实验系统研究与开发”等辽宁省教学改革研究项目2项。目前在研项目4项,科研经费100余万元。所完成的科研项目中有2项获中国煤炭工业科学技术一等奖、1项获国家安全监督管理局第五届安全生产科技成果二等奖、1项获中国

商业联合会科学技术三等奖、1项获振兴辽宁老工业基地“巾帼发明”三等奖、4项获阜新市科技进步一等奖。出版学术专著《复杂机电系统的建模与仿真研究》(获辽宁省自然科学学术成果二等奖)、《复杂结构薄煤层高效综采关键技术》2部;获“一种蛇形机器人”、“多功能激光衍射测量仪及其测量方法”国家发明专利2项、“纵轴式掘进机截割头辅助设计及优化软件”、“采煤机工作机构优化设计及载荷计算软件”软件著作权2部;编著(主编)《控制工程基础与应用》、《互换性与测量技术基础》等高等学校规划教材6部。在《煤炭学报》、《中国机械工程》、《机械科学与技术》等期刊发表学术论文120余篇(20余篇被EI全文收录),其中“基于多体动力学的采煤机截割部可靠性研究”被评为《煤炭学报》创刊五十周年百篇最具影响力学术论文,获中国煤炭学会表彰。 主要从事研究内容:基于虚拟样机技术,将柔性多体系统动力学的建模理论和方法应用于煤矿采掘机械的研发中,针对样机投入使用后的各种工况进行仿真分析,并对物理样机工作的可靠性及寿命进行科学预测,找出设计的薄弱环节,给出具体的优化设计方案,确保物理样机的一次成功。可以明显提高产品的系统级性能,极大地节省设计时间、降低开发成本,获得最优化的设计产品,为大型工矿装备的创新设计与优化提供了全新的研究方法和手段。 这是一项通用技术,可适用于任何机电液控一体化产品,并且产品越复杂,应用这项技术的优势就越突出,尤其适用于新产品的研发和对现有设备的改造,目前的研究处于国际先进水平。

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 6.0上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>//头文件 #include//库头文件-----动态分配内存空间 typedef int elemtype;//定义数据域的类型 typedef struct linknode//定义结点类型 { elemtype data;//定义数据域 struct linknode *next;//定义结点指针 }nodetype; 2)创建单链表

nodetype *create()//建立单链表,由用户输入各结点data域之值,//以0表示输入结束 { elemtype d;//定义数据元素d nodetype *h=NULL,*s,*t;//定义结点指针 int i=1; cout<<"建立一个单链表"<> d; if(d==0) break;//以0表示输入结束 if(i==1)//建立第一个结点 { h=(nodetype*)malloc(sizeof(nodetype));//表示指针h h->data=d;h->next=NULL;t=h;//h是头指针 } else//建立其余结点 { s=(nodetype*) malloc(sizeof(nodetype)); s->data=d;s->next=NULL;t->next=s; t=s;//t始终指向生成的单链表的最后一个节点

辽宁工程技术大学历史沿革

阜新煤矿学院 1949年,成立阜新矿力中等技术专科学校。 1949年,为了适应东北工业建设的需要,东北行政委员会工业部相继开办了鹤岗工科高级职业学校、鸡西煤矿工业学校、抚顺工科高级职业学校、阜新工科高级职业学校以及东北煤矿工人速成学校。 1952年,阜新工科高级职业学校更名为阜新矿 山工业(技术)学校。 1958年7月15日,经国家煤炭工业部批准,在阜新工科高级职业学校的基础上建立阜新煤矿学院,隶属于国家煤炭工业部。学制4年,设采煤、矿建、机电3个系,煤层露天开采、矿山企业建筑、矿山测量、矿山机电、矿山机械制造与修配6个专业,并保留中专部院长戴镜如,党委书记谭伯。 1960年,阜新煤矿学院地质测量工程系独立建系。 1961年,抚顺煤矿学院、辽宁煤矿师范学院并入阜新煤矿学院。 1962年9月,阜新煤矿学院首届700名学生毕业。 1964年6月14日,鸡西矿业学院部分专业并入阜新煤矿学院。 全国人大常务委员会副委员长,中国科学院院长郭沫若题为该校题写校名阜新煤矿学院。 1978年3月1日,阜新煤矿学院被国务院确定为全国首批88所重点院校之一。 阜新矿业学院 1978年,经国家煤炭工业部批准,阜新煤矿学院更名为阜新矿业学院。 1978年,阜新矿业学院被批准为全国200所有条件接收留学生单位之一。 1979年,阜新矿业学院创立了综合性学术理论刊物《阜新矿业学院·自然科学版》,进入CSTAT和EI以及《中国学术期刊(光盘版)》,并首批进入中国核心期刊。 1981年,阜新矿业学院被批准为首批硕士学位授予单位。矿山机械化和矿山电气化两个学科拥有硕士学位授予权。 1981年,全国人大常委会委员长叶剑英为该校题写校名阜新矿业学院。 1982年,阜新矿业学院管理工程系成立。 1982年,阜新矿业学院创立《矿业高教研究》。 1983年,阜新矿业学院章梦涛教授在世界上首次提出了煤与瓦斯的统一失稳理论。 1984年,阜新矿业学院设立研究生部,负责研究生的培养管理工作。 1984年,阜新矿业学院被国家煤炭部确定为东北电化教育中心。 1985年,阜新矿业学院韩来德教授负责研制的“无煤柱开采研究及推广”获国家科学技术进步三等奖;“ 1985年1月29日,阜新矿业学院举行首届硕士学位授予大会,有16名研究生获得硕士学位证书。 1985年7月18日,煤炭部党组和煤炭部分别发文,任命吕福臣为阜新矿业学院党委书记,吴大章为院长。 1985年12月12日,阜新矿业学院成立研究生会。

数据结构与算法实验任务书.

《数据结构与算法实验》任务书 实验一动态链表的设计与应用 一、实验目的、要求 1、掌握使用VC 6.0上机调试线性表的基本方法; 2、掌握线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构 和链式存储结构上的运算。 二、实验内容 1.输入一组学生信息,建立一个单链表。 2.遍历该链表,输出学生信息。 3.查找某特定的学生,查找成功返回1,否则返回0。 4.编写在非递减有序链表中插入一个元素使链表元素仍有序的函数,并利用该函数建立一个非递减有序单向链表。 5.利用算法4建立两个非递减有序单向链表,然后合并成一个非递增链表。 *6.采用单向链表实现一元多项式的存储并实现两个多项式相加并输出结果。 7.编写一个主函数,调试上述算法。 *8.综合训练:利用链表实现一个班级学生信息管理(数据录入、插入、删除、排序、查找等,并能够实现将数据存储到文件中) 三、实验说明 1.存储定义 #define MAXSIZE 100 //表中元素的最大个数 typedef int ElemType;//元素类型 typedef struct list{ ElemType elem[MAXSIZE];//静态线性表 int length; //表的实际长度 }SqList;//顺序表的类型名 2.建立顺序表时可利用随机函数自动产生数据。 四、注意问题 1.插入、删除时元素的移动原因、方向及先后顺序。 2.了解不同的函数形参与实参的传递关系。

一、实验目的、要求 1.掌握栈、队列的思想及其存储实现。 2.掌握栈、队列的常见算法的程序实现。 二、实验内容 1.采用链式存储实现栈的初始化、入栈、出栈操作。 2.采用顺序存储实现栈的初始化、入栈、出栈操作。 3.采用链式存储实现队列的初始化、入队、出队操作。 4.采用顺序存储实现循环队列的初始化、入队、出队操作。 5.在主函数中设计一个简单的菜单,分别测试上述算法。 *6.综合训练:1)利用栈实现表达式求值算法。 2)利用栈实现迷宫求解。 三、实验说明 1.基本要求:实现算法1、3或算法2、4即可。 2.类型定义 顺序栈示例 #define MAX 100 //栈的最大值 typedef struct {ElemType *base; int top; }SqStack; 顺序队列示例 #define MAX 100 //队列的最大长度 typedef struct {ElemType *base; int front,rear; }SqQueue; 3.算法6的每个子功能尽可能写成函数形式。 四、注意问题 1.重点理解栈、队列的算法思想,能够根据实际情况选择合适的存储结构。 2.注意算法6的各个函数之间值的传递情况。 3.栈、队列的算法是后续实验的基础(广义表、树、图、查找、排序等)。

数据结构实验总结报告

数据结构实验总结报告 李博杰PB10000603 一、调试过程中遇到哪些问题? (1)在二叉树的调试中,从广义表生成二叉树的模块花了较多时间调试。 由于一开始设计的广义表的字符串表示没有思考清晰,处理只有一个孩子的节点时发生了混乱。调试之初不以为是设计的问题,从而在代码上花了不少时间调试。 目前的设计是: Tree = Identifier(Node,Node) Node = Identifier | () | Tree Identifier = ASCII Character 例子:a(b((),f),c(d,e)) 这样便消除了歧义,保证只有一个孩子的节点和叶节点的处理中不存在问题。 (2)Huffman树的调试花了较长时间。Huffman编码本身并不难处理,麻烦的是输入输出。 ①Huffman编码后的文件是按位存储的,因此需要位运算。 ②文件结尾要刷新缓冲区,这里容易引发边界错误。 在实际编程时,首先编写了屏幕输入输出(用0、1表示二进制位)的版本,然后再加入二进制文件的读写模块。主要调试时间在后者。 二、要让演示版压缩程序具有实用性,哪些地方有待改进? (1)压缩文件的最后一字节问题。 压缩文件的最后一字节不一定对齐到字节边界,因此可能有几个多余的0,而这些多余的0可能恰好构成一个Huffman编码。解码程序无法获知这个编码是否属于源文件的一部分。因此有的文件解压后末尾可能出现一个多余的字节。 解决方案: ①在压缩文件头部写入源文件的总长度(字节数)。需要四个字节来存储这个信息(假定文件长度不超过4GB)。 ②增加第257个字符(在一个字节的0~255之外)用于EOF。对于较长的文件,会造成较大的损耗。 ③在压缩文件头写入源文件的总长度%256的值,需要一个字节。由于最后一个字节存在或不存在会影响文件总长%256的值,因此可以根据这个值判断整个压缩文件的最后一字节末尾的0是否在源文件中存在。 (2)压缩程序的效率问题。 在编写压缩解压程序时 ①编写了屏幕输入输出的版本 ②将输入输出语句用位运算封装成一次一个字节的文件输入输出版本 ③为提高输入输出效率,减少系统调用次数,增加了8KB的输入输出缓存窗口 这样一来,每写一位二进制位,就要在内部进行两次函数调用。如果将这些代码合并起来,再针对位运算进行一些优化,显然不利于代码的可读性,但对程序的执行速度将有一定提高。

《数据结构》实验指导书

一、实验目的: 1.掌握线性表的链式存储结构。 2.熟练地利用链式存储结构实现线性表的基本操作。 3.能熟练地掌握链式存储结构中算法的实现。 二、实验内容: 1.用头插法或尾插法建立带头结点的单链表。 2.实现单链表上的插入、删除、查找、修改、计数、输出等基本操作。 三、实验要求: 1. 根据实验内容编写程序,上机调试、得出正确的运行程序。 2. 写出实验报告(包括源程序和运行结果)。 四、实验学时:4学时 五、实验步骤: 1.进入编程环境,建立一新文件; 2. 参考以下相关内容,编写程序,观察并分析输出结果。 ①定义单链表的数据类型,然后将头插法和尾插法、插入、删除、查找、修改、计数、输出等基本操作都定义成子函数的形式,最后在主函数中调用它,并将每一种操作前后的结果输出,以查看每一种操作的效果。 ②部分参考程序(略) 六、实践部分 选作实验可以从以下两个实验中任选一个: 1 试设计一元多项式相加(链式存储)的加法运算。 A(X)=7+3X+9X8+5X9 B(X)=8X+22X7-9X8 1.建立一元多项式; 2.输出相应的一元多项式; 3.相加操作的实现。 2 约瑟夫生死环 利用单循环链表存储结构,解决约瑟夫(Josephus)环问题。即:将编号是1,2,…,n(n>0)的n个人按照顺时针方向围坐一圈,每人持有一个正整数密码。开始时任选一个正整数作为报数上限值m,从某个人开始顺时针方向自1开始顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有的人全部出列为止。令n最大值取30。设计一个程序,求出出列顺序,并输出结果。

最新数据结构实训总结

精品文档 这次课程设计的心得体会通过实习我的收获如下1、巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。4、通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。从刚开始得觉得很难,到最后把这个做出来,付出了很多,也得到了很多,以前总以为自己对编程的地方还不行,现在,才发现只要认真做,没有什么不可能。 编程时要认真仔细,出现错误要及时找出并改正,(其中对英语的要求也体现出来了,因为它说明错误的时候都是英语)遇到问题要去查相关的资料。反复的调试程序,最好是多找几个同学来对你的程序进行调试并听其对你的程序的建议,在他们不知道程序怎么写的时候完全以一个用户的身份来用对你的用户界面做一些建议,正所谓当局者迷旁观者清,把各个注意的问题要想到;同时要形成自己的编写程序与调试程序的风格,从每个细节出发,不放过每个知识点,注意与理论的联系和理论与实践的差别。另外,要注意符号的使用,注意对字符处理,特别是对指针的使用很容易出错且调试过程是不会报错的,那么我们要始终注意指针的初始化不管它怎么用以免不必要麻烦。 通过近两周的学习与实践,体验了一下离开课堂的学习,也可以理解为一次实践与理论的很好的连接。特别是本组所做的题目都是课堂上所讲的例子,在实行之的过程中并不是那么容易事让人有一种纸上谈兵的体会,正所谓纸上得来终觉浅绝知此事要躬行。实训过程中让我们对懂得的知识做了进一步深入了解,让我们的理解与记忆更深刻,对不懂的知识与不清楚的东西也做了一定的了解,也形成了一定的个人做事风格。 通过这次课程设计,让我对一个程序的数据结构有更全面更进一步的认识,根据不同的需求,采用不同的数据存储方式,不一定要用栈,二叉树等高级类型,有时用基本的一维数组,只要运用得当,也能达到相同的效果,甚至更佳,就如这次的课程设计,通过用for的多重循环,舍弃多余的循环,提高了程序的运行效率。在编写这个程序的过程中,我复习了之前学的基本语法,哈弗曼树最小路径的求取,哈弗曼编码及译码的应用范围,程序结构算法等一系列的问题它使我对数据结构改变了看法。在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,也从中发现自己平时学习的不足和薄弱环节,从而加以弥补。 精品文档

数据结构实验报告模板

2009级数据结构实验报告 实验名称:约瑟夫问题 学生姓名:李凯 班级:21班 班内序号:06 学号:09210609 日期:2010年11月5日 1.实验要求 1)功能描述:有n个人围城一个圆圈,给任意一个正整数m,从第一个人开始依次报数,数到m时则第m个人出列,重复进行,直到所有人均出列为止。请输出n个人的出列顺序。 2)输入描述:从源文件中读取。 输出描述:依次从显示屏上输出出列顺序。 2. 程序分析 1)存储结构的选择 单循环链表 2)链表的ADT定义 ADT List{ 数据对象:D={a i|a i∈ElemSet,i=1,2,3,…n,n≧0} 数据关系:R={< a i-1, a i>| a i-1 ,a i∈D,i=1,2,3,4….,n} 基本操作: ListInit(&L);//构造一个空的单链表表L ListEmpty(L); //判断单链表L是否是空表,若是,则返回1,否则返回0. ListLength(L); //求单链表L的长度 GetElem(L,i);//返回链表L中第i个数据元素的值; ListSort(LinkList&List) //单链表排序 ListClear(&L); //将单链表L中的所有元素删除,使单链表变为空表 ListDestroy(&L);//将单链表销毁 }ADT List 其他函数: 主函数; 结点类; 约瑟夫函数 2.1 存储结构

[内容要求] 1、存储结构:顺序表、单链表或其他存储结构,需要画示意图,可参考书上P59 页图2-9 2.2 关键算法分析 结点类: template class CirList;//声明单链表类 template class ListNode{//结点类定义; friend class CirList;//声明链表类LinkList为友元类; Type data;//结点的数据域; ListNode*next;//结点的指针域; public: ListNode():next(NULL){}//默认构造函数; ListNode(const Type &e):data(e),next(NULL){}//构造函数 Type & GetNodeData(){return data;}//返回结点的数据值; ListNode*GetNodePtr(){return next;}//返回结点的指针域的值; void SetNodeData(Type&e){data=e;}//设置结点的数据值; void SetNodePtr(ListNode*ptr){next=ptr;} //设置结点的指针值; }; 单循环链表类: templateclass CirList { ListNode*head;//循环链表头指针 public: CirList(){head=new ListNode();head->next=head;}//构造函数,建立带头节点的空循环链表 ~CirList(){CirListClear();delete head;}//析构函数,删除循环链表 void Clear();//将线性链表置为空表 void AddElem(Type &e);//添加元素 ListNode *GetElem(int i)const;//返回单链表第i个结点的地址 void CirListClear();//将循环链表置为空表 int Length()const;//求线性链表的长度 ListNode*ListNextElem(ListNode*p=NULL);//返回循环链表p指针指向节点的直接后继,若不输入参数,则返回头指针 ListNode*CirListRemove(ListNode*p);//在循环链表中删除p指针指向节点的直接后继,且将其地址通过函数值返回 CirList&operator=(CirList&List);//重载赋

数据结构实验1

天津科技大学 2015—2016学年第2学期数据结构实验任务书 课程名称:数据结构实验学时: 2 实验题目:线性表的基本操作 实验环境: Visual C++ 实验目的: 1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入和删除等。 实验内容: 定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表(二选一),使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生的学号和成绩; (4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5) 给定一个学生信息,插入到表中指定的位置; (6) 删除指定位置的学生记录; (7) 统计表中学生个数。 实验提示: 学生信息的定义: typedef struct { char no[8]; //8位学号 char name[20]; //姓名 int score; //成绩 }Student; 顺序表的定义 typedef struct { Student *elem; //指向数据元素的基地址 int length; //线性表的当前长度 }SqList; 链表的定义:

typedef struct LNode{ Student data; //数据域 struct LNode *next; //指针域 }LNode,*LinkList; 实验要求: (1) 程序要添加适当的注释,程序的书写要采用缩进格式。 (2) 程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。 (3) 程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。 (4) 根据实验报告模板详细书写实验报告,在实验报告中给出链表根据姓名进行查找的算法和插入算法的流程图。 (5) 以班为单位实验周周五上传源程序和实验报告。顺序表的源程序保存为SqList.cpp,链表的源程序保存为LinkList.cpp,实验报告命名为:实验报告1.doc。源程序和实验报告压缩为一个文件(如果定义了头文件则一起压缩),按以下方式命名:学号姓名.rar,如07081211薛力.rar。

2018数据结构实训题目

以下共15个题目,同一个班上做同一个题目的人数最多3个,每人必须独立完成。题目一、停车场模拟程序 题目二、杂货店排队模拟程序 如果有朋友正在排队,则可以插队。 题目三、哈希表存储的电话号码查询

基本要求: ?设每个记录有以下数据项:用户名、电话、地址; ?从键盘输入各记录,以电话号码为关键字建立哈希表; ?采用链地址法方法解决冲突; ?能够查找并显示给定电话号码的相关记录。 题目四、信科校园导游咨询模拟系统 基本要求: ?系统中记录了校园中的教学楼、图书馆、食堂、田径场、篮球场、超市、医务室等 坐标信息和连接这些坐标的路径信息 ?每条路径包含两个坐标间的距离和预计消耗的卡路里 ?能进行坐标点的增加和删除 ?能够满足不同用户的查询,如:两坐标之间的最高卡路里路线和最短距离路线 题目五、哈夫曼编码和译码 基本要求: ?输入为:一段英文或中文的文章(原文) ?对输入的文章构造哈夫曼树 ?生成对应的编码 ?输出为:原文所对应的编码(译文) ?根据已经生成的编码表,输入任意的译文可以得到对应的原文 题目六、舞伴配对问题 基本要求: ?所有参加舞会的人按性别分为两队 ?排队的先后次序,按不同规则可分为:时间先后、从高到矮的顺序 ?第一轮舞曲开始的时候,舞场上最多容纳N对舞者,则两队中的前N个可以在舞 场上跳舞,其余人员等待下轮舞曲开始后才能进入舞场。第一轮舞曲结束后,前N个挑完舞曲的人可以选择离开或是继续排队等待下一轮舞曲开始后跳舞。 题目七、表达式求值问题 基本要求: ?输入为:任意的中缀表达式 ?对输入表达式做合法性判断,不合法的如:(a+b ,a++b等 ?对合法的表达式进行中缀转后缀的处理 ?再对后缀表达式进行计算 ?输出整个表达式的值,如:(—2+3)*4 = 4 题目八、基于双向链表的约瑟夫生者死者游戏

数据结构实验报告.

实验目的 (1)学会用先序创建一棵二叉树。 (2)学会采用递归算法对二叉树进行先序、中序、后序遍历。 (3)学会打印输出二叉树的遍历结果。 实验内容 【问题描述】建立一棵二叉树,并对其进行遍历(先序、中序、后序),打印输出遍历结果。 【基本要求】 从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),并采用递归算法对其进行遍历(先序、中序、后序),将遍历结果打印输出。 【测试数据】 ABCффDEфGффFффф(其中ф表示空格字符) 则输出结果为先序:ABCDEGF 中序:CBEGDFA 后序:CGBFDBA 【选作内容】 采用非递归算法实现二叉树遍历。 实验步骤 (一)需求分析 1、在这个过程中,接受遍历的二叉树是从键盘接受输入(先序),以二叉链表作为存储结构,建立的二叉树。因此,首先要创建一棵二叉树,而这棵二叉树是先序二叉树。本演示程序中,集合的元素设定为大写字母ABCDEFG,输出的先序,中序,后序遍历分别为ABCDEGF,CBEGDFA,CGBFDBA。二叉树可以表示为:

接受的输入数据在进行递归的先序,中序,后序遍历后,分别将结果打印出来。 2、在程序运行的过程中可以看到,以计算机提示用户执行的方式进行下去,即在计算机终端上提示“输入二叉树的先序序列”后,由用户在键盘上输入ABC##DE#G##F###,之后相应的选择遍历及遍历结果显示出来。 3、程序执行的命令包括:首先是二叉树的先序序列被创建输入,其次是对输入进去的先序序列有次序的进行先序,中序,后序遍历。最后是打印出二叉树的遍历结果。 4、测试数据 (1)在键盘上输入的先序序列ABC##DE#G##F### (2)先序遍历结果ABCDEGF

数据结构实训

高职学院 计算机专业类 课程设计报告 (2012 -2013学年第1学期) 课程设计类型:数据结构 题目:栈+串+队列+线性表+后缀表达式求值 学号: 姓名: 专业:计算机应用技术 指导教师: 课程设计日期:高职学院制 目录 1. 问题分析..................................... 错误!未定义书签。

问题描述·················错误!未定义书签。 要求分析·················错误!未定义书签。 2. 总体设计..................................... 错误!未定义书签。 功能分析·················错误!未定义书签。 3. 详细设计..................................... 错误!未定义书签。 程序结构图················错误!未定义书签。 程序流程图················错误!未定义书签。 4. 功能测试..................................... 错误!未定义书签。 本系统的主界面··············错误!未定义书签。 栈子系统界面···············错误!未定义书签。 串子系统界面···············错误!未定义书签。 队列子系统界面··············错误!未定义书签。 线性表子系统界面·············错误!未定义书签。 后缀表达式求值子系统界面·········错误!未定义书签。 退出系统·················错误!未定义书签。 5. 课程设计小结................................. 错误!未定义书签。参考文献..................................... 错误!未定义书签。附录:源代码清单................................ 错误!未定义书签。

数据结构C语言版实验报告完整版

数据结构C语言版实验 报告 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

数据结构(C语言版) 实验报告 专业:计算机科学与技术、软件工程 学号:_______________________ 班级:_________软件二班______________ 姓名:________朱海霞______________ 指导教师:___刘遵仁________________ 青岛大学信息工程学院 2013年10月 实验1 实验题目:顺序存储结构线性表的插入和删除 实验目的: 了解和掌握线性表的逻辑结构和顺序存储结构,掌握线性表的基本算法及相关的时间性能分析。 实验要求: 建立一个数据域定义为整数类型的线性表,在表中允许有重复的数据;根据输入的数据,先找到相应的存储单元,后删除之。 实验主要步骤: 1、分析、理解给出的示例程序。 2、调试程序,并设计输入一组数据(3,-5,6,8,2,-5,4,7,- 9),测试程序的如下功能:根据输入的数据,找到相应的存储单元并删除,显示表中所有的数据。 程序代码: #include<> #include<> #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10

typedef struct{ int* elem; int length; int listsize; }Sqlist; int InitList_Sq(Sqlist &L){ =(int*)malloc(LIST_INIT_SIZE*sizeof(int)); if(! return -1; =0; =LIST_INIT_SIZE; return OK; } int ListInsert_Sq(Sqlist&L,int i,int e){ if(i<1||i>+1) return ERROR; if=={ int *newbase; newbase=(int*)realloc,+LISTINCREMENT)*sizeof(int)); if(!newbase) return -1; =newbase; +=LISTINCREMENT; } int *p,*q; q=&[i-1]); for(p=&[]);p>=q;--p) *(p+1)=*p; *q=e; ++; return OK; } int ListDelete_Sq(Sqlist &L,int i,int e){ int *p,*q; if(i<1||i>return ERROR; p=&[i-1]); e=*p; q=+; for(++p;p<=q;++p) *(p-1)=*p; ; return OK; } int main(){ Sqlist L; InitList_Sq(L);ertex=a; irstedge=NULL; irstedge; G->adjlist[i].firstedge=s; irstedge;

相关主题
文本预览
相关文档 最新文档