数据结构课程设计报告撰写要求

合集下载

数据结构课程设计要求

数据结构课程设计要求

一、数据结构课程设计要求1. 学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。

有问题及时主动通过各种方式与教师联系沟通。

2. 学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,二、数据结构课程设计题目1. 运动会分数统计(限 1 人完成)任务:参加运动会有n个学校,学校编号为 1 n。

比赛分成m个男子项目,和w个女子项目。

项目编号为男子 1 ............................ m,女子m+1••…m+w。

不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1 ,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。

(m<=20,n<=20 )功能要求:1)可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号或名称、学校总分、男女团体总分排序输出;4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

5)数据存入文件并能随时查询6)规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。

(数据文件的数据读写方法等相关内容在 c 语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。

进行程序测试,以保证程序的稳定。

测试数据及测试结果请在上交的资料中写明;2. 飞机订票系统(限1 人完成)任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

数据结构的课程设计

数据结构的课程设计

数据结构的课程设计一、课程目标知识目标:1. 理解数据结构的基本概念,掌握线性表、树、图等常见数据结构的特点与应用场景。

2. 学会分析不同数据结构的存储方式和操作方法,并能运用到实际问题的解决中。

3. 掌握排序和查找算法的基本原理,了解其时间复杂度和空间复杂度。

技能目标:1. 能够运用所学数据结构知识,解决实际问题,提高编程能力。

2. 能够运用排序和查找算法,优化程序性能,提高解决问题的效率。

3. 能够运用数据结构知识,分析并解决复杂问题,培养逻辑思维能力和创新意识。

情感态度价值观目标:1. 培养学生对数据结构学科的兴趣,激发学习热情,形成主动探索和积极进取的学习态度。

2. 增强学生的团队协作意识,培养合作解决问题的能力,提高沟通表达能力。

3. 培养学生的抽象思维能力,使其认识到数据结构在计算机科学中的重要性,激发对计算机科学的热爱。

本课程针对高中年级学生,结合学科特点和教学要求,注重理论与实践相结合,培养学生的编程能力和逻辑思维能力。

通过本课程的学习,使学生能够掌握数据结构的基本知识,提高解决实际问题的能力,同时培养良好的学习态度和价值观。

在教学过程中,将目标分解为具体的学习成果,以便进行后续的教学设计和评估。

二、教学内容1. 数据结构基本概念:介绍数据结构的概念、作用和分类,重点讲解线性结构(线性表、栈、队列)和非线性结构(树、图)的特点。

2. 线性表:讲解线性表的顺序存储和链式存储结构,以及相关操作(插入、删除、查找等)。

3. 栈和队列:介绍栈和队列的应用场景、存储结构及相关操作。

4. 树和二叉树:讲解树的定义、性质、存储结构,二叉树的遍历算法及线索二叉树。

5. 图:介绍图的定义、存储结构(邻接矩阵和邻接表)、图的遍历算法(深度优先搜索和广度优先搜索)。

6. 排序算法:讲解常见排序算法(冒泡排序、选择排序、插入排序、快速排序等)的原理、实现及性能分析。

7. 查找算法:介绍线性查找、二分查找等查找算法的原理及实现。

数据结构课程设计实验报告 完整版

数据结构课程设计实验报告 完整版

第一章链表的应用线性表是数据结构中最简单、最常用的一种线性结构,也是学习数据结构全部内容的基础,其掌握的好坏直接影响着后继课程的学习。

线性表的顺序存储结构,即顺序表的概念相对比较简单,因此,本章的主要任务是使用有关单链表的操作来实现通讯录信息系统的管理。

1.1设计要求本章的设计实验要求使用有关链表的操作来实现通讯录信息系统的管理。

为了验证算法,通讯录管理包括单通讯录链表的建立、通讯者的插入、通讯者的删除、通讯者的查询及通讯录表的输出等。

主控菜单的设计要求使用数字0—5来选择菜单项,其他输入则不起作用。

程序运行后,给出6个菜单项的内容和输入提示:1.通讯录链表的建立2. 通讯者结点的插入3. 通讯者结点的查询4. 通讯者结点的删除5. 通讯录链表的输出0. 退出管理系统请选择0—5:1.2设计分析1.2.1主控菜单函数设计分析1.实现循环和功能选择首先编写一个主控菜单驱动程序,输入0—5以进入相应选择项。

假设输入选择用变量sn存储,它作为menu_select函数的返回值给switch语句。

使用for循环实现重复选择,并在主函数main()中实现。

实际使用时,只有选择大于5或小于0的值,程序才能结束运行,这就要使用循环控制。

这里使用for循环语句实现菜单的循环选择,为了结束程序的运行,使用了“return”语句,也可以使用“exit(0);”语句。

2.得到sn的合理值如前所述,应该设计一个函数用来输出提示信息和处理输入,这个函数应该返回一个数值sn,以便供给switch语句使用。

假设函数名为menu_select,对于sn的输入值,在switch 中case语句对应数字1—5,对于不符合要求的输入,提示输入错误并要求重新输入。

将该函数与主函数合在一起,编译运行程序,即可检查并验证菜单选择是否正确。

1.2.2功能函数设计分析1.建立通讯录链表的设计这里实际上是要求建立一个带头结点的单链表。

建立单链表有两种方法,一种称之为头插法,另一种称为尾插法。

数据结构课程设计——报告(样例)

数据结构课程设计——报告(样例)

《数据结构与算法》课程设计报告王婧、龚丹、宋毅编写题目:航空订票管理系统学期:秋班号:学号:姓名:成绩:哈尔滨华德学院电子与信息工程学院年月一、实训设计的目的与要求(注:正文为宋体,五号字,为单倍行距)(一)课程设计目的(不少于字).数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(语言),自行实现一个较为完整的应用系统。

.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。

.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。

具体的有:()熟练掌握链表存储结构及其建立过程和常用操作;()熟练掌握队列的建立过程和常用操作;()学会自己调试程序的方法并掌握一定的技巧。

(二)题目要求(不少于字).每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级,或)以及等候替补的客户名单(包括姓名和所需数量)。

.系统能实现的操作和功能如下:()查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行和余票额;()承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票量少余订票额,则需重新询问客户要求。

若需要,可登记排队候补;()承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。

二、实训环境配置系统三、设计正文.需求分析。

数据结构课程设计实践报告

数据结构课程设计实践报告

数据结构实验报告实验名称:结构图提交文档学生姓名:提交文档学生学号:同组成员名单:指导教师姓名:结构图一、实验目的和要求1、设计目的1.掌握图的相关概念,包括图,有向图,无向图,完全图,子图,连通图,度,入度,出度,简单回路和环等定义。

2.重点掌握图的各种存储结构,包括邻接矩阵和邻接表等。

3.重点掌握图的基本运算,包括创建图,输出图,深度优先遍历,广度优先遍历等。

4.掌握图的其他运算,包括最小生成树,最短路径,拓扑排序和关键路径等算法。

5. 灵活运用图这种数据结构解决一些综合应用问题。

2、设计内容和要求1、编写一个程序algo8-1.cpp,实现不带权图和带权图的邻接矩阵与邻接表的相互转换算法、输出邻接矩阵与邻接表的算法,并在此基础上设计一个程序exp8-1.cpp实现如下功能:①建立如图1所示的有向图G的邻接矩阵,并输出;②由有向图G的邻接矩阵产生邻接表,并输出;③再由②的邻接表产生对应的邻接矩阵,并输出。

图12、编写一个程序algo8-2.cpp,实现图的遍历运算,并在此基础上设计一个程序exp8-2.cpp完成如下功能:①输出图1所示的有向图G从顶点0开始的深度优先遍历序列(递归算法);②输出图1所示的有向图G从顶点0开始的深度优先遍历序列(非递归算法);③输出图1所示的有向图G从顶点0开始的广度优先遍历序列。

3、设计一个程序exp8-3.cpp,采用邻接表存储图,并输出图8.1(a)中从指定顶点1出发的所有深度优先遍历序列。

二、运行环境(软、硬件环境)软件环境:Visual C++6.0运行平台: Win32硬件:普通个人pc机三、实验过程描述文件graph.h中定义了图的邻接矩阵表示类型和邻接表表示类型,该头文件在以下三个实验中都会使用到。

其代码如下:#ifndef GRAPH_H_INCLUDED#define GRAPH_H_INCLUDEDtypedef int InfoType;#define MAXV 100 //最大顶点个数#define INF 32767 //INF表示无限大//以下定义邻接矩阵类型typedef struct{int no;InfoType info;}VertexType;typedef struct{int edges[MAXV][MAXV];int n,e;VertexType vexs[MAXV];}MGraph;//以下定义邻接表类型typedef struct ANode{int adjvex;struct ANode* nextarc;InfoType info;}ArcNode;typedef int Vertex;typedef struct VNode{Vertex data;ArcNode* firstarc;}VNode;typedef VNode AdjList[MAXV];typedef struct{AdjList adjlist;int n,e;}ALGraph;#endif // GRAPH_H_INCLUDED实验①源程序。

数据结构课程设计

数据结构课程设计

《数据结构》课程设计实践指导书一、实践的目的和任务《数据结构》课程设计是计算机科学技术专业集中实践性环节之一,是学习完《数据结构》课程后进行的一次全面的综合练习。

开设本课程设计实践的主要目的就是要达到理论与实际应用相结合,提高学生的动手能力,完成计算机应用能力的培养;主要任务是通过对给定问题的求解,使学生在运用《数据结构》、程序设计以及其它所学课程中的各种基本技术和理论,在建立问题模型、构造求解算法、设计数据结构、编程及上机调试等方面得到全面的锻炼,从而能更深刻地理解《数据结构》的精髓,为后续软件课程的学习及软件设计能力的提高奠定良好的基础。

二、实践的内容和要求(一)实践内容实践内容为数据结构课程完成后,运用《数据结构》、程序设计以及其它所学课程中的知识和技术来解决实际的问题。

在解决实际应用性问题时,按照计算机解决问题的步骤进行以下几个方面的工作:采用简明、严格的问题描述,建立模型,设计求解方法,用计算机实现求解方法,最后进行测试和文档制作。

1、建立模型许多问题的最初描述既不精确又不简练,还有一些问题不可能简单而精确地用计算机可求解的形式来描述,即使有些可用计算机求解的问题,也需要在很大范围内确定问题的参数,而那些合理的参数值只有通过实验才能确定。

因此,要用计算机解决问题,必须首先要以简明、严格的方式将问题描述清楚。

数学或其它科学中的几乎所有分支都可作为某一类具体问题的抽象模型。

例如,在涉及到若干对象及其相互间关系的问题时所用的数学模型为图论;数值计算问题中常用的数学模型为线性方程组(用于求解电路的电流强度或结构中的应力)或微分方程(用于预报人口增长情况或化学反应速度等);在符号与文本处理问题时常用字符串及形式语法作为模型(如编译系统)。

《数据结构》课程中所介绍的各种结构均可作为一种模型。

2、构造算法对问题建立了适当的数学模型后,就可以依据这一模型求解。

最初的目标是给出一个算法形式的解法,这是设计的核心部分。

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

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

《数据结构》课程设计报告一、课程目标《数据结构》课程旨在帮助学生掌握计算机科学中数据结构的基本概念、原理及实现方法,培养其运用数据结构解决实际问题的能力。

本课程目标如下:1. 知识目标:(1)理解数据结构的基本概念,包括线性表、栈、队列、串、数组、树、图等;(2)掌握各类数据结构的存储表示和实现方法;(3)了解常见算法的时间复杂度和空间复杂度分析;(4)掌握排序和查找算法的基本原理和实现。

2. 技能目标:(1)能够运用所学数据结构解决实际问题,如实现字符串匹配、图的遍历等;(2)具备分析算法性能的能力,能够根据实际问题选择合适的算法和数据结构;(3)具备一定的编程能力,能够用编程语言实现各类数据结构和算法。

3. 情感态度价值观目标:(1)培养学生对计算机科学的兴趣,激发其探索精神;(2)培养学生团队合作意识,提高沟通与协作能力;(3)培养学生面对问题勇于挑战、善于分析、解决问题的能力;(4)引导学生认识到数据结构在计算机科学中的重要地位,激发其学习后续课程的兴趣。

本课程针对高年级学生,课程性质为专业核心课。

结合学生特点,课程目标注重理论与实践相结合,强调培养学生的实际操作能力和解决问题的能力。

在教学过程中,教师需关注学生的个体差异,因材施教,确保课程目标的达成。

通过本课程的学习,学生将具备扎实的数据结构基础,为后续相关课程学习和职业发展奠定基础。

二、教学内容根据课程目标,教学内容主要包括以下几部分:1. 数据结构基本概念:线性表、栈、队列、串、数组、树、图等;教学大纲:第1章 数据结构概述,第2章 线性表,第3章 栈和队列,第4章 串。

2. 数据结构的存储表示和实现方法:教学大纲:第5章 数组和广义表,第6章 树和二叉树,第7章 图。

3. 常见算法的时间复杂度和空间复杂度分析:教学大纲:第8章 算法分析基础。

4. 排序和查找算法:教学大纲:第9章 排序,第10章 查找。

教学内容安排和进度如下:1. 第1-4章,共计12课时,了解基本概念,学会使用线性表、栈、队列等解决简单问题;2. 第5-7章,共计18课时,学习数据结构的存储表示和实现方法,掌握树、图等复杂结构;3. 第8章,共计6课时,学习算法分析基础,能对常见算法进行时间复杂度和空间复杂度分析;4. 第9-10章,共计12课时,学习排序和查找算法,掌握各类算法的实现和应用。

《数据结构》课程设计文档格式

《数据结构》课程设计文档格式

课程设计报告的内容设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料.设计报告以规定格式的电子文档书写,打印并装订,排版及图,表要清楚,工整.装订顺序如下:封面、目录、正文.正文包括以下7个内容:1.需求分析陈述说明程序设计的任务,强调的是程序要做什么,需要什么结果、所能达到的功能.2.概要设计说明本程序中用到的所有抽象数据类型的定义,主程序的流程以及各程序模块之间的层次(调用)关系.3.详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);可采用流程图、N S 图进行描述,画出函数和过程的调用关系图.4.调试分析内容包括:a.调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;b.算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想;c.经验和体会等.5.测试结果列出你的测试结果,包括输入和输出.这里的测试数据应该完整和严格,最好多于需求分析中所列.6.参考文献列出参考的相关资料和书籍.封面格式如下:数据结构课程设计报告班级:_____ _____ _____ _________ 姓名:__________ __________ 指导教师:_______ ____________ 成绩:__________________________信息工程学院年月日目录1.需求分析 (2)2.概要设计 (2)3.详细设计 (2)4.调试分析 (2)5.测试结果 (2)参考文献 (6)附录……………………………………………………一、需求分析二、概要设计三、详细设计四、调试分析五、测试结果六、参考文献七、附录附录为程序代码!。

数据结构课程设计报告(最小生成树)

数据结构课程设计报告(最小生成树)

《数据结构》课程设计报告课程名称:最小生成树课题负责人名(学号):同组成员名单(角色):指导教师:评阅成绩:评阅意见:提交报告时间:2011年12月19日最小生成树计算机科学与技术专业学生:指导老师:[摘要]选择一颗生成树,使之总的消费最少,也就是要构造连通网的最小代价生成树(简称为最小生成树)的问题,一颗生成树的代价就是树上各边的代价之和,构造最小生成树可以有多种算法,其中多数算法利用了MST的性质。

关键词:最小生成树连通图普里姆算法克鲁斯卡尔算法 MST一、设计目的1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

二、算法思想分析该设计的要求是在n个城市之间建设网络,不仅要保证连通,还要求是最经济的架设方法。

根据克鲁斯卡尔和普里姆算法的不同之处,该程序将城市个数大于十个时应用普里姆算法求最小生成树,而城市个数小于十个时则应用克鲁斯卡尔进行计算。

1.算法思想1)普里姆(Prim)算法思想a)选择从0节点开始,并选择0节点相关联的最小权值边,将与这条边相关联的另一顶点出列;b)在出列的节点中相关联的所有边中选择一条不与另一个已出列的节点相关联的权值最小的边,并将该边相关联的节点出列;c)重复b)直到所有的节点出列。

2)克鲁斯卡尔(Kruskal)算法思想为了使生成树上总的权值之和最小,应该使每一条边上的权值尽可能的小,所以应从权值最小的边选起,直至选出n-1条不能构成回路的权值最小的边位置。

具体做法如下:首先构造一个含n个顶点的森林,然后按权值从小到大从连通图中选择不使森林中产生回路的边加入到森林中去,直至该森林变成一棵树为止,这棵树便是连通图的最小生成树。

数据结构课程设计

数据结构课程设计

数据结构课程设计一、简介数据结构是计算机科学中的重要基础课程,它研究数据的组织、存储和管理方式,以及数据之间的关系和操作。

数据结构课程设计是该课程的一项重要任务,旨在让学生通过实践掌握数据结构的基本原理和应用技巧。

本文将详细介绍数据结构课程设计的相关内容和要求。

二、设计目标数据结构课程设计的主要目标是培养学生的数据结构设计和实现能力,让他们能够独立完成一个具有一定复杂度的项目。

具体目标包括:1. 理解数据结构的基本概念和原理;2. 掌握常见数据结构的特点、操作和应用;3. 能够选择合适的数据结构解决实际问题;4. 能够设计和实现数据结构的相关算法;5. 能够进行数据结构的性能分析和优化。

三、设计内容数据结构课程设计的内容应该紧密结合数据结构的理论知识和实际应用,具有一定的难度和挑战性。

常见的设计内容包括但不限于以下几个方面:1. 线性表:设计一个线性表的数据结构,并实现相关的操作,如插入、删除、查找等。

可以选择数组、链表或其他结构作为底层实现。

2. 栈和队列:设计一个栈或队列的数据结构,并实现相关的操作,如入栈、出栈、入队、出队等。

可以选择数组、链表或其他结构作为底层实现。

3. 树和二叉树:设计一个树或二叉树的数据结构,并实现相关的操作,如插入、删除、遍历等。

可以选择链表或其他结构作为底层实现。

4. 图:设计一个图的数据结构,并实现相关的操作,如插入节点、添加边、遍历等。

可以选择邻接矩阵或邻接表作为底层实现。

5. 排序和查找:设计一个排序或查找算法,并实现相关的操作,如快速排序、二分查找等。

可以选择合适的数据结构作为辅助。

6. 字符串处理:设计一个字符串处理的算法,并实现相关的操作,如字符串匹配、替换等。

可以选择合适的数据结构作为辅助。

四、设计要求数据结构课程设计的要求应该具体明确,包括以下几个方面:1. 功能要求:设计的数据结构应能够满足实际问题的需求,能够实现基本的操作和功能。

2. 界面要求:设计的数据结构应具有良好的界面设计,用户能够方便地使用和操作。

数据结构课程设计要求

数据结构课程设计要求

课程设计要求
1.应用自己熟悉的语言Java,C/C++等语言编写程序,可读性要好;2.上机前充分准备,复习有关算法,写出计算步骤,反复检查,调试程序;
3.完成任务后写出课程设计报告;
4.课程设计的时间要求:上午:8:30—10:00;10:30--11:45;
下午:13:30--15:00;15:30--16:45;
5.上课期间请不要做与学习无关的事情,如:qq聊天,游戏,浏览无关网络,观看影视节目等等,若发现,经教育不改者,1
次直接扣10分!
6.总评成绩包括课程设计报告成绩(50分)和平时成绩(50分,包括出勤10分,上机表现40分);
7.独立完成,如有雷同,一律判零分!注意被雷同!
8.课程设计符合规范,如格式不对,直接判零分!
9.按时上交课程设计报告,如逾期按照规定扣分!
10.课程设计上交打印稿一份,从7月8日考试上交,最晚上交时间:7月10日,13:30-17:00,地点:机电楼B227。

如果没人,可将课程设计报告上交至机C308.
1。

数据结构课程设计实验报告

数据结构课程设计实验报告

数据结构课程设计实验报告
1. 实验背景和目的,首先,我会介绍实验的背景和目的,包括这个实验在整个数据结构课程中的重要性和意义,以及实验的具体目标和要解决的问题。

2. 实验内容和方法,接着,我会详细描述实验的具体内容和方法,包括所涉及到的数据结构类型,算法设计和实现过程,以及实验中所用到的工具和技术。

3. 实验结果和分析,然后,我会展示实验的结果和数据分析,包括对实验结果的定量和定性分析,以及对实验过程中遇到的问题和挑战的解决方法和思考。

4. 总结和展望,最后,我会对整个实验进行总结和展望,包括对实验过程中的经验和教训的总结,以及对未来可能的改进和扩展方向的展望。

以上是我对数据结构课程设计实验报告的回答和讨论,希望能够全面和完整地回答你的问题。

如果还有其他方面需要补充或者深入讨论的地方,请随时告诉我。

数据结构实验报告(实验)

数据结构实验报告(实验)

深 圳 大 学 实 验 报 告课程名称: 数据结构实验与课程设计 实验项目名称: 实验一:顺序表的应用 学院: 计算机与软件学院 专业: 指导教师: **报告人: 文成 学号: ********** 班级: 5 实验时间: 2012-9-17实验报告提交时间: 2012-9-24教务部制一、实验目的与要求:目的:1.掌握线性表的基本原理2.掌握线性表地基本结构3.掌握线性表地创建、插入、删除、查找的实现方法要求:1.熟悉C++语言编程2.熟练使用C++语言实现线性表地创建、插入、删除、查找的实现方法二、实验内容:Problem A: 数据结构——实验1——顺序表例程Description实现顺序表的创建、插入、删除、查找Input第一行输入顺序表的实际长度n第二行输入n个数据第三行输入要插入的新数据和插入位置第四行输入要删除的位置第五行输入要查找的位置Output第一行输出创建后,顺序表内的所有数据,数据之间用空格隔开第二行输出执行插入操作后,顺序表内的所有数据,数据之间用空格隔开第三行输出执行删除操作后,顺序表内的所有数据,数据之间用空格隔开第四行输出指定位置的数据Sample Input611 22 33 44 55 66888 352Sample Output11 22 33 44 55 6611 22 888 33 44 55 6611 22 888 33 55 6622HINT第i个位置是指从首个元素开始数起的第i个位置,对应数组内下标为i-1的位置Problem B: 数据结构——实验1——顺序表的数据交换Description实现顺序表内的元素交换操作Input第一行输入n表示顺序表包含的·n个数据第二行输入n个数据,数据是小于100的正整数第三行输入两个参数,表示要交换的两个位置第四行输入两个参数,表示要交换的两个位置Output第一行输出创建后,顺序表内的所有数据,数据之间用空格隔开第二行输出执行第一次交换操作后,顺序表内的所有数据,数据之间用空格隔开第三行输出执行第二次交换操作后,顺序表内的所有数据,数据之间用空格隔开注意加入交换位置的合法性检查,如果发现位置不合法,输出error。

数据结构课程设计报告

数据结构课程设计报告

数据结构设计报告题目:简单编译器的实现学院信息科学与工程学院学生姓名尹婷班级学号0909101820指导教师林立新日期2012.7.03一、问题描述编写一个简单的文章编辑程序,具体功能如下:1.用户可按行输入字符串到程序,每行不超过80字2.分别统计出其中每行的英文字母数,数字数,空格数,以及整篇文章的总字数3.统计某一字符串在文章中出现的次数并输出该次数4.可删除某一字串,删除后程序自动将后面的字符前移程序要求:1.存储结构使用线性表2.分别使用几个子函数实现相应功能二、基本要求模块功能需求(1)输入模块:用户可在文本输入框中输入任意字符,最多输入80个字符,输入后保存在程序变量中.(2)编辑模块:用户可点击删除按钮,删除某一行或行中的任何字串.(3)统计模块:程序会根据用户需求统计某一行的英文字母数、数字数、空格数,并自动显示整篇文章的总字数(4)显示输出模块:程序会将用户输入的文章及统计结果合理清晰的显示在窗口中三、数据结构的设计1、定义结构体struct line,文本行采用顺序存储,行与行之间采用链四软件模块结构图文章输入、浏览、统计串、统计及删除的详细流程如下图所示:五程序流程图int FindString(LINE * &head,char *str) /*统计str在文章中出现的次数*/ 求在一行中Str出现的次数的流程图:①.查找第一个字符,如果有第一个字符即p->data[i]==str[0],设计数器k=0②.查找这个字符后面的字符与要查找的字符串是否匹配即p->data[i+j]==str[j],如果匹配k++③.重复第二步,如果k=len2,则查找到,count++;如果没查找到,重新进行第一步void delstringword(char *s,char *str) /*删除字符串*s中的字符串*str*/实现思想:①.从字符串s 中寻找str 第一次出现的位置 *p=strstr(s,str);②.len=strlen(s);i=len-strlen(p)即前i 项恰好不含要删除的字符串,将前i 项复制到tmp 中 ③.j=i+strlen(str) 即要删除的字符串在i+1和j 之间,将j 之后的字符串复制到tmp 中④.将tmp 赋给串s ,返回s六 程序设计思想存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。

数据结构课程设计10577

数据结构课程设计10577

《数据结构》课程设计指导书课程设计名称:数据结构课程设计指导老师&***课程设计周(时)数:1周指导方式:集体辅导与个别辅导相结合课程设计适用专业:网络工程系一.课程设计的目的1、掌握数据结构与算法的设计方法,初步具备根据应用需求选择合理数据结构并进行算法设计的能力;2、进一步提升C语言的应用能力;2、初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3、提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;5、提升文档写作能力。

二.课程设计要求1、认真分析课题内容和要求,明确设计任务。

2、仔细分析课题,合理设计算法。

3、一人一题,必须独立完成。

4、必须在规定的时间内完成课设任务,否则没有资格参加答辩,无成绩。

5、严禁抄袭,否则取消答辩资格或成绩作废。

6、设计达到一定工作量(300行以上代码)。

7、课程设计说明书不少于15页(不包括代码)。

三、课程设计方法与步骤1、问题定义与需求分析:根据设计题目的要求,充分地分析和理解问题,确定功能需求和限制条件。

2、数据结构设计:对问题描述中涉及的操作对象定义相应的数据类型和各抽象数据类型,写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明)。

3、总体设计:采用结构化设计方法,按照以数据结构为中心的原则划分模块,设计软件层次结构和模块间的调用关系,定义主程序,画出模块之间的调用关系图。

在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试。

4、详细设计:定义数据存储结构,各个主要模块的算法定义。

详细设计的结果是对数据结构和基本操作作出进一步的求精,写出数据存储结构的类型定义,用伪码写出函数的算法。

5、程序编码:把详细设计的结果进一步求精为程序设计语言程序。

同时加入一些注解,使程序中逻辑概念清楚。

教学计划编制问题 数据结构课程设计报告 湖南工程学院

教学计划编制问题 数据结构课程设计报告 湖南工程学院

课程设计报告课程名称数据结构课程设计课题名称教学计划编制问题专业网络工程班级 0901学号 2009031201XX姓名指导教师刘长松陈华光李杰君2011年 7 月 15 日湖南工程学院课程设计任务书课程名称数据结构课程设计课题教学计划编制问题专业班级网络工程0901 学生姓名 X X学号 2009031201XX 指导老师刘长松陈华光李杰君审批任务书下达日期: 2011 年 6 月 26 日任务完成日期:2011 年 7 月 15 日一、设计内容与设计要求1.设计内容:1)问题描述大学的每个专业都要制订教学计划。

假设任何专业都有固定的学习年限,每学年含两学期,每学期的时间长度和学分上限均相等。

每个专业开设的课程都是确定的,而且课程在开设时间的安排必须满足先修关系。

每门课程有哪些先修课程是确定的,可以有任意多门,也可以没有。

每门课恰好占一个学期。

试在这样的前提下设计一个教学计划编制程序。

2)基本要求a.输入参数包括:学期总数,一学期的学分上限,每门课的课程号(固定占3位的字母数字串)、学分和直接先修课的课程号。

b.允许用户指定下列两种编排策略之一:一是使学生在各学期中的学习负担尽量均匀;二是使课程尽可能地集中在前几个学期中。

c.若根据给定的条件问题无解,则报告适当的信息;否则,将教学计划输出到用户指定的文件中。

计划的表格格式自行设计。

3)测试数据学期总数:6;学分上限:10;该专业共开设课数:12课程号:从C01到C12;学分顺序:2,3,4,3,2,3,4,4,7,5,2,3。

先修关系如下图:4)实现提示可设学期总数不超过12,课程总数不超过100。

如果输入的先修课程号不在该专业开设的课程序列中,则作为错误处理。

应建立内部课程号与课程号之间的对应关系。

2.设计要求:课程设计报告规范1)需求分析a.程序的功能。

b.输入输出的要求。

2)概要设计a.程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能。

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

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

《数据结构》课程设计报告《数据结构》课程设计报告如下:一、课程设计分析在学习了数据结构课本理论知识后,为了检验自己所学知识的牢固性巩固大家的理论知识,调动大家的编程兴趣;同时为大家提供一个实践自己,检验自己的平台,以增加大家对将来工作的适应能力;也为了锻炼大家的动手实践能力,遂在学期末进行了本次课程设计。

“数据结构”在计算机科学中是一门综合性的专业基础课。

“数据结构”的研究不仅涉及到计算机硬件的研究范围,而且和计算机软件的研究有着密切的关系,无论是编译程序还是操作系统,都涉及到数据元素在存储器中的分配问题。

在研究信息检索时也必须考虑如何组织数据,以便查找和存取数据元素更为方便。

因此,可以认为“数据结构”是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。

在计算机科学中,“数据结构”不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。

我们本着自己的兴趣及挑战自己的态度,也为检验我们理论知识的熟练度,锻炼我们动手实践能力,我们选择了小型图书管理系统的编写。

因为我们生活在大学,图书馆是我们学习的天堂,借书和还书又是必不可少的,一个好的图书管理系统对于我们学生和管理人员都会为大家提供很多便利。

本着挑战和创新的思想,我们进行了此次课程设计程序编写及报告撰写。

二、课程设计基本理论运用所学的数据结构相关内容,设计一个小型图书馆管理系统,我们将运用到的原理有:链表的操作,包括插入,删除等;还有数据的排序;文件的操作等;遍历查找,插入排序等原理。

也运用了c语言的基本图形界面,使用户使用界面更加人性化,更加美观。

数据结构的创建是本课程设计的一个重要内容,我们这里使用的是单链表的数据结构,结合c语言语言特点、实际的图书馆管理系统的基本操作实现了一个简单的图书管理系统的正常运行,实现一些简单的功能。

三、课程算法设计通过对图书管理系统内的图书进行添加和删除操作,实现同学借书和还书的记录工作,通过对图书的查找和按指定方式排序,更有利于同学们挑选自己所需要的图书,借阅借书所需时间。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计报告撰写要求(一)纸张与页面设置1.采用国际标准A4型打印纸或复印纸,纵向打印。

2.页边距:上3.5cm、下2.5cm、左边距3.0cm,右边距2.5cm。

3.页眉2.5cm、页脚1.8cm、对称页边距。

(二)页眉“沈阳航空工业学院课程设计报告”,五号楷体,居中。

(三)页脚标页码,五号宋体,居中。

(四)题目、摘要、关键词题目:小二号黑体,居中。

(五)标题一级标题,三号粗宋体,居中,用“1 ”、“2 ”、“3 ”…等表示序号。

二级标题,小三号粗宋体,左对齐,用“1.1”、“1.2”、“1.3”…等表示序号。

三级标题,四号粗宋体,左对齐,用“1.1.1”、“1.1.2”、“1.1.3”…等表示序号。

(六)正文小四号宋体,两端对齐,1.5倍行距。

(七)图、表1.表头包括:表标识及表名两部分,表头在表上,居中,用五号宋体字。

2.图头包括:图标识及图名两部分,图头在图下,居中,用五号宋体字。

(八)参考文献格式:[序号]作者.译者.书名.版本.出版社,出版时间(九)报告封页及模版见下页沈阳航空工业学院课程设计报告课程设计名称:数据结构课程设计课程设计题目:PRIM算法求最小生成树院(系):计算机学院专业:计算机科学与技术班级:7401102班学号:200704011030姓名:指导教师:郑志勇目录沈阳航空工业学院 ...................................................................................................... - 2 -1 需求分析 (1)1.1题目内容及要求 (1)1.2题目分析 (1)2 系统设计 (3)2.1数据结构设计 (3)2.2函数设计 (4)2.2.1系统流程 (5)图2.2.1 系统流程 (5)2.2.2 PRIM 函数流程 (5)2.2.3 Huitu函数流程 (6)2.2.4 GraphicVer函数输出邻接矩阵 (6)3 调试分析 (7)3.1调试初期 (7)3.2调试中期 (7)3.3调试后期 (9)4 测试及运行结果 (10)4.1欢迎界面 (10)4.2获取输入,绘制无向图 (10)4.3输出邻接矩阵 (13)4..4.演示PRIM算法生成最小生成树 (13)4.5用户退出 (14)参考文献 (15)附录(关键部分程序清单) (16)1 需求分析1.1 题目内容及要求以合适方便的方式输入一个带权值的无向图,采用合适的存储结构存储该无向图。

然后根据PRIM算法求该无向图的最小生成树并输出。

要求:1.输入无向图的方法尽量简单方便2.要能够形象方便地观察无向图的图形结构3.要能够形象地演示PRIM算法求最小生成树的过程1.2 题目分析刚拿到题目,乍看一下题目很简短,貌似很简单,但是细看之后就发现了很多隐藏在简短语句后的更深一层次的要求。

首先是“以合适方便的方式输入”,短短十个字就向你提出了两方面要求:首先是“输入”,即代表你最好可以得到一种通用的算法让你对一定范围内的数据进行运算后从而得到正确的结果;“合适方便”即提示你要从输入方便且有利于运算的输入数据的方法;采用合适的存储结构必然是本次课设当之无愧的重点,亦是此题目的第三方面要求;最后就是用PRIM算法求无向图的最小生成树。

PRIM算法在理解与实现方面不是很困难,但要求能够形象的演示该算法就不是那么简单了。

无论从算法角度,还是从输入方便、存储安全角度,数组都是此次课设的不二选择,即采用邻接矩阵的存储方式来存储无向带权图。

虽然邻接表的动态存储可以令该算法使用更大规模的数据并在一定范围内比数组更加节省空间并有更高的效率,但此次课设另一个重点就是演示算法而非真正的应用于实际问题,所以只需要较少的数据量来完成PRIM算法的演示即可。

故数组的便于操作及更加稳定、方便的优势便凸显出来。

在画图这个问题上,我曾一度找错了方向。

刚拿到题目时,我只是望文生义的认为我需要演示的是最小生成树一步一步的演示过程,这让我一度选择VC 6.0中的MFC来演示过程。

但后来,当我因为MFC当量调用WINDOWS的程序并有较多的头文件而焦头烂额的时候,重读课设要求的时候我才发现,过于注重细枝末节的我竟没有抓住此题目真正要求!“模拟PRIM算法最小生成树的过程”即是让你显示PRIM算法在更接近计算机可以理解的方式上显示其具体过程。

Turbo C 的超强的图像处理让我明白,它就是我这次课设的系统环境了。

2 系统设计2.1数据结构设计对于无向图的任何操作,无疑都必须依赖于数据的存储结构。

这里的存储结构不仅仅指的是数据在计算机中的物理内存,更多的是抽象程度更高的抽象数据结构。

图的存储结构主要有两种:邻接矩阵和邻接表。

邻接表以一个一维数组作表头节点存储图的顶点,然后利用表头引出所有以该点为箭尾的邻接边的信息;而邻接矩阵则是单独建立一个一维数组来存储顶点的信息,并以顶点的个数来建立一个相应的N阶对称矩阵,以二维数组存储单元来存储相应边的权值。

由于PRIM算法需要多次修改closeedge[ ]中的adjvex和lowcost 值,且此次数据规模较小,只需达到演示部分数据即可,所以统一采用数组的存储结构,即亦采用邻接矩阵的存储结构来存储无向带权图更利于实现及操作。

邻接矩阵的抽象数据结构定义:#define INFINITY INT_MAX //最大值#define MAX_ERTEX_NUM 20 //最大顶点数typedef enum {DG , DN , UDG , UDN }GraphKind;//{ 有向图,有向网,无向网,无向图}typedef struct Arc Cell{VRType adj ; // VRType 是顶点关系的类型。

对无权图,用1和0表示相邻否;对//带权图则为权值类型InfoType * info; //该弧相关信息的指针}ArcCell , AdjMatrix [ MAX_VERTEX_NUM][MAX_VERTEX_NUM];Typedef struct {VertexType vexs [ MAX_VERTEX_NUM] ; //顶点向量AdjMatrix arcs ; // 邻接矩阵int vexnum , arcnum ; //图的当前顶点数和弧数GraphKind kind ; // 图的种类标志}Mgraph ;2.2函数设计本系统所使用的函数见表2.2.1本系统所调用函数调用的关系见图2.2.2图2.2.2 本系统的函数调用关系2.2关键流程流程图能直观和系统地把主函数的各个执行步骤和调用的子函数以及调用先后表示出来,子函数中也有调用其他子函数的情况,画出子函数的流程图能清楚地看出子函数中各步语句的执行,下面是关于主函数流程和关键的子函数流程图的直观表示。

2.2.1系统流程图2.2.1 系统流程2.2.2 PRIM 函数流程表2.2.2 PRIM 函数流程2.2.3 Huitu函数流程表2.2.3 Huitu函数流程2.2.4 GraphicVer函数输出邻接矩阵图2.2.4 GraphicVer函数输出邻接矩阵3 调试分析3.1 调试初期由于编写的程序具有模块化的特性,且VC 6.0 的调试显然由于TC及个人对VC的熟练程度远优于TC等方面,我选择先在VC 6.0环境下完成除图形化演示算法过程函数的其他过程。

由于数据结构选择的较合理,且对PRIM算法理解的较为深刻,所以在此环境下的调试并没有太多困难,只是简单的笔误。

添加了画图函数后,我就不得不使用TC编程环境。

本人使用的是vista 系统,刚运行TC就发现提示:该操作系统不支持16 bit MS-DOS 系统。

上网查看帮助,安装了DOSBOX软件虚拟出DOS系统运行,才开始之后的调试。

3.2调试中期由于Turbo C 2.0 不支持鼠标,更没有剪切、粘贴等常用快捷的操作,且本人对计算机图形学、TC的图形函数了解甚少,本人电脑更是不兼容TC全屏模式,所以这段时期成为最让本人备受煎熬的时期。

首先,由于TC 操作复杂,更因为本人变成习惯不好,导致经常一运行就死机还没保存过的代码就又“恢复出厂化”,让所见之人无不扼腕惋惜,本人亦是痛心疾首,苦不堪言。

编译过程出现过的错误有把自定义函数的名字与TC 图形化函数其中一个的关键字相同,TC显示“该函数定义了多重特性”或“该函数数值过多”等类似提示的错误图3.2.1 初始化错误将自定义的initgraph函数重新命名为void huitu( ),即可排除此错误。

再次编译,又发现指针错误:图3.2.2 指针错误Outtextxy(int x ,int y ,*p),即要求最后一项为指向一字符串的指针。

数组就是指针,如果这里出错,那只应该是我定义的lowcose[ ]存储的数不是字符串。

所以我曾试图用strcpy()将数组内数据一一进行传拷贝到一指针,然后再调用outtextxy()。

但是结果依然错误!后来,在同学的帮助下,我终于弄明白是因为我数组内存储的是整数型数据,必然无法通过strcpy( )转换成指针。

后来,我改用vsprintf(tmp,"%d",&lowcost[vex-i]),即现将整型转化为字符串,此错误即可排除。

3.3 调试后期图3.3 连接错误这是经过多次修改后,最后一个编译错误。

该名定义是你所使用的视频显示模式,影响的是图形化后的屏幕像素及可支持的最大色彩。

经试验,此程序在另一台XP电脑上可编译成功,故本人认为是由于VISTA 的兼容性导致TC无法调用该定义,即使使用虚拟机也无法排除。

考虑到此语句对输出结果影响不大,故将此语句删除,即使得TC自动获取其他可用的视频模式。

编译成功!4 测试及运行结果4.1 欢迎界面运行程序,首先进入用户的欢迎界面。

模拟界面向导IRIS采用互动式的方法提示用户进入PRIM算法演示界面。

首先IRIS会先询问用户是否愿意看PRIM算法演示,若此时用户选择“y”,用户即可顺利进入模拟PRIM 的程序(见图4.1.1);图4.1.1 用户欢迎界面及正常进入算法演示界面否则,向导友情提示可以直接退出程序,其效果图见图4.1.2。

图4.1.2 用户选择退出算法演示的界面4.2获取输入,绘制无向图创建无向图,动态显示在屏幕上,并输出其存储结构,即无向网的邻接矩阵。

首先按照提示,收入先要创建顶点的坐标及其名。

其效果图见图4.2.1图4.2.2 动态建立无向图输入时需要注意的是,由于该程序时默认添加一点则连接相应的直线,所以在一点多线的时候,像例子中的A点,就要重新返回A后再连接其他点。

具体操作见图4.2.3。

相关文档
最新文档