数据结构课程设计排序实验报告
《数据结构》课程设计报告 专业 班级 姓名 学号 指导教师 起止时间
课程设计:排序综合 一、任务描述 利用随机函数产生n个随机整数(20000以上),对这些数进行多种方法进行排序。(1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存在不同的文件中。 (2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。 要求:根据以上任务说明,设计程序完成功能。 二、问题分析 1、功能分析 分析设计课题的要求,要求编程实现以下功能: (1)随机生成N个整数,存放到线性表中; (2)起泡排序并计算所需时间; (3)简单选择排序并计算时间; (4)希尔排序并计算时间; (5)直接插入排序并计算所需时间; (6)时间效率比较。 2、数据对象分析 存储数据的线性表应为顺序存储。 三、数据结构设计 使用顺序表实现,有关定义如下: typedef int Status; typedef int KeyType ; //设排序码为整型量 typedef int InfoType; typedef struct { //定义被排序记录结构类型 KeyType key ; //排序码 I nfoType otherinfo; //其它数据项 } RedType ; typedef struct { RedType * r; //存储带排序记录的顺序表 //r[0]作哨兵或缓冲区 int length ; //顺序表的长度 } SqList ; //定义顺序表类型 四、功能设计 (一)主控菜单设计
综合课程设计1题目2016-2017.2
综合课程设计1 一、考核方法和内容 根据课程设计过程中学生的学生态度、题目完成情况、课程设计报告书的质量和回答问题的情况等按照10%、40%、30%、20%加权综合打分。成绩评定实行优秀、良好、中等、及格和不及格五个等级。评分标准: 优秀:答辩所有问题都能答出+报告良好 或报告良好+实现“提高部分”的功能; 良好:答辩所有问题都能答出+报告一般; 或报告一般+实现“提高部分”的功能; 中等:答辩大部分问题能答出+报告良好; 及格:答辩大部分问题能答出+报告一般; 以下四种,都不及格: 1)答辩几乎答不出问题; 2)报告几乎都是代码; 3)雷同部分达到60%以上; 4)课设报告与数据结构和c/c++关联不大。 课设报告的装订顺序如下: 任务书(签名,把题目要求贴在相应位置,注意下划线)-----目录(注意目录的格式,页码)-----1、设计任务(题目要求)-----2、需求分析(准备选用什么数据逻辑结构?数据元素包含哪些属性?需要哪些函数?为什么要这样设计?最后列出抽象数据类型定义)-----3、系统设计(设计实现抽象数据类型,包含选择什么物理存储方式?数据元素的结构体或类定义,以及各函数的设计思路,算法,程序流程图等)----4、编码实现(重要函数的实现代码)-----5、调试分析(选择多组测试数据、运行截图、结果分析)-----6、课设总结(心得体会)-----7、谢辞-----8、参考文献; 课设报告打印要求: B5纸张打印,报告总页数控制在10—15页内,报告中不能全是代码,报告中代码总量控制在3页内。版式:无页眉,有页码,页码居中 字号:小四,单倍行距 字体:宋体+Times new Romar 截图:截图要配图的编号和图的题目,如:“图1 Insert函数流程图” 二、课程设计的具体内容 1.想要优,必须实现“提高部分”的功能,但,实现“提高部分”不代表一定优; 2.其他成绩,不用完成“提高部分”。 要求:全部采用数据结构课程中的内容实现,采用C或C++实现,逻辑结构只能选线性结构、树型结构、图型结构、集合结构中的一种,不能用数据库。 1、算术表达式求解 基本要求:给定一个算术表达式,通过程序求出最后的结果。 (1)从键盘输入要求解的算术表达式; (2)采用栈结构进行算术表达式的求解过程;
数据结构课程设计排序算法总结
排序算法: (1) 直接插入排序 (2) 折半插入排序(3) 冒泡排序 (4) 简单选择排序 (5) 快速排序(6) 堆排序 (7) 归并排序 【算法分析】 (1)直接插入排序;它是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好的序的有序表中,从而得到一个新的、记录数增加1的有序表。 (2)折半插入排序:插入排序的基本操作是在一个有序表中进行查找和插入,我们知道这个查找操作可以利用折半查找来实现,由此进行的插入排序称之为折半插入排序。折半插入排序所需附加存储空间和直接插入相同,从时间上比较,折半插入排序仅减少了关键字间的比较次数,而记录的移动次数不变。 (3)冒泡排序:比较相邻关键字,若为逆序(非递增),则交换,最终将最大的记录放到最后一个记录的位置上,此为第一趟冒泡排序;对前n-1记录重复上操作,确定倒数第二个位置记录;……以此类推,直至的到一个递增的表。 (4)简单选择排序:通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换之。 (5)快速排序:它是对冒泡排序的一种改进,基本思想是,通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 (6)堆排序: 使记录序列按关键字非递减有序排列,在堆排序的算法中先建一个“大顶堆”,即先选得一个关键字为最大的记录并与序列中最后一个记录交换,然后对序列中前n-1记录进行筛选,重新将它调整为一个“大顶堆”,如此反复直至排序结束。 (7)归并排序:归并的含义是将两个或两个以上的有序表组合成一个新的有序表。假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或1的有序子序列;再两两归并,……,如此重复,直至得到一个长度为n的有序序列为止,这种排序称为2-路归并排序。 【算法实现】 (1)直接插入排序: void InsertSort(SqList &L){ for(i=2;i<=L.length ;i++) if(L.elem[i]L.elem[0];j--) L.elem [j+1]=L.elem [j]; L.elem [j+1]=L.elem[0]; } } (2)折半插入排序:
《操作系统》综合课程设计教学大纲
《操作系统课程设计》教学大纲 课程类型:专业必修课 学分:0.5 计划周数:1周 预修课程:高级语言程序设计、微机原理、数据结构 开设学期:第四学期 适用专业:计算机科学与技术本科、网络工程本科、软件工程本科 一、课程设计目的与任务 《操作系统》是一门重要的专业基础课,是涉及较多硬件知识的计算机系统软件课程。在计算机软硬件课程的设置上,它起着承上启下的作用。操作系统对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,用户在使用计算机时都要得到操作系统提供的服务。操作系统课程设计的主要任务是研究计算机操作系统的基本原理和算法,掌握操作系统的进程管理、存储管理、文件管理和设备管理的基本原理与主要算法。目的是使学生掌握常用操作系统(如DOS、Windows或Linux)的一般管理方法,了解它是如何组织和运作的,对操作系统的核心概念和算法有一个透彻的理解,并对系统运行的机制有一个全面的掌握,从而充分理解系统调用与程序设计之间的关系。 二、课程设计选题 设计项目一:动态资源分配算法演示程序(银行家算法) 内容: 主要用于解决多种资源被多个独立执行的进程共享的安全算法。采用矩阵存储资源的数据,通过对系统资源预分配后检查系统状态,以避免死锁的产生。 要求: 1.资源种类与数目可在界面进行设置,在资源分配过程中可以随时增加进程及其对资源的需求。 2.可读取样例数据(要求存放在外部文件中)进行资源种类、数目与进程数的初始化。 3.在资源分配过程中可以随时进行系统安全状态检测。
4.如果能够通过系统安全状态检测,则系统对该进程进行资源分配;当进程满足所有资 源分配后能够自行释放所有资源,退出资源竞争。 5.要求进行安全性检查时按指定策略顺序进行,即按每个进程当前Need数由小至大进 行排序,如果Need数相同,则按序号由小至大进行排序; 6.具有一定的数据容错性。 设计项目二:通用处理机调度演示程序 内容: 设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。 要求: 1.进程调度算法包括:时间片轮转算法、先来先服务算法、短作业优先算法、静态优先权 优先调度算法、高响应比调度算法。 2.每一个进程有一个PCB,其内容可以根据具体情况设定。 3.进程数、进入内存时间、要求服务时间、作业大小、优先级等均可以在界面上设定。 4.可读取样例数据(要求存放在外部文件中)进行进程数、进入内存时间、时间片长度、 作业大小、进程优先级的初始化 5.可以在运行中显示各进程的状态:就绪、执行(由于不要求设置互斥资源与进程间的同 步关系,故只有两种状态) 6.采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态及相应的阻 塞队列。 7.有性能比较功能,可比较同一组数据在不同调度算法下的平均周转时间。 设计项目三:用多进程同步方法演示“桔子苹果”问题 内容: 有两类生产者,一类负责生产桔子,一类负责生产苹果;有两类消费者,一类负责消费桔子,一类负责消费苹果;他们共享一个有20个存储单元的有界缓冲区,每个存储单元只能放入一种产品(桔子/苹果)。 要求: 1.二类生产者与二类消费者数目均为20,即20个生产者负责生产桔子,20个生产者负责生产苹果;20个消费者负责消费桔子,20个消费者负责消费苹果。
数据结构课程设计(附代码)
上海应用技术学院课程设计报告 课程名称《数据结构课程设计》 设计题目猴子选大王;建立二叉树;各种排序;有序表的合并;成绩管理系统;院系计算机科学与信息工程专业计算机科学与技术班级 姓名学号指导教师日期 一.目的与要求 1. 巩固和加深对常见数据结构的理解和掌握 2. 掌握基于数据结构进行算法设计的基本方法 3. 掌握用高级语言实现算法的基本技能 4. 掌握书写程序设计说明文档的能力 5. 提高运用数据结构知识及高级语言解决非数值实际问题的能力 二.课程设计内容说明 1. 项目一 (1) 对设计任务内容的概述 学生成绩管理** 任务:要求实现对学生资料的录入、浏览、插入和删除等功能。 输入:设学生成绩以记录形式存储,每个学生记录包含的信息有:学号和各门课程的成绩,设学生成绩至少3门以上。存储结构:采用线性链式结构。 (2) 详细设计 LinkList *create():输入学生成绩记录函数; void print(LinkList *head):显示全部记录函数 LinkList *Delete(LinkList *head):删除记录函数 LinkList *Insert(LinkList *head):插入记录函数 void menu_select():菜单选择 void ScoreManage():函数界面
(3) 程序流程图 (4) 程序模块及其接口描述 该程序可以分为以下几个模块: 1、菜单选择:void menu_select(); 提供五种可以选择的操作,在main函数中通过switch语句调用菜单menu_select()函数,进入不同的功能函数中完成相关操作。
学生成绩排名系统课程设计
《程序设计基础》课程设计 ------学生成绩排名系统 第一章课程设计的目的和要求 高级语言课程设计的主要目的是培养学生能够提高综合应用语言的能力,通过课程设计的训练,使学生能及时巩固已学的知识,补充未学的但有必要的内容,掌握应用计算机解决实际问题的基本方法,熟悉程序开发的全过程,提高综合应用语言的能力。高级语言程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构程序设计的方法按照课程设计的题目要求,分析,编写,调试和测试高级语言程序及编写设计报告。 1.1课程设计的目的 1.巩固和掌握高级语言程序设计基本概念; 2.掌握基本的程序设计方法; 3.掌握开发软件所需的需求定义能力; 4.提高书写程序设计说明文档的能力; 5.提高综合运用高级语言的能力,强化编程和调试能力。 1.2 课程设计的基本要求 1.根据所给的课程设计题目,分析课程设计题目的要求; 2.对系统功能模块进行分析,写出详细的设计说明文档; 3.编写程序代码,调试所编写程序使其能正确运行; 4.设计完成的软件便于完成和使用; 5.设计完成后提交课程设计报告;
第二章课程设计任务内容2.1 考核内容 2.1.1 编写的C++语言程序 ●针对编写的C++程序,应该主要考查下列内容: ●是否符合题目要求,是否完成了主要功能; ●是否存在语法错误、逻辑错误及运行错误; ●程序设计是否合理; ●程序是否具有良好的可读性和可靠性; ●是否符合结构化程序设计所倡导的基本理念; ●用户界面是否友好。 2.1.2 课程设计报告 ●针对提交的课程设计报告,应该主要考查下列内容: ●程序设计的报告内容是否全面,观点是否正确; ●设计过程是否符合结构化程序设计方法的基本原则; ●层次是否清楚,语言是否通顺; ●各种图表是否规范;是否具有良好的程序设计习惯。 2.2 课题 10、学生信息管理系统设计 实现以下功能: 1) 系统以菜单方式工作; 2) 学生信息录入功能(学生信息用文件保存); 3) 学生信息浏览功能; 4) 查询、排序功能(至少两种查询依据和两种排序依据); 5) 学生信息删除、修改功能。
拓扑排序课程设计报告
拓扑排序 一问题描述 本次课程设计题目是:编写函数实现图的拓扑排序 二概要设计 1.算法中用到的所有各种数据类型的定义 在该程序中用邻接表作为图的存储结构。首先,定义表结点和头结点的结构类型,然后定义图的结构类型。创建图用邻接表存储的函数,其中根据要求输入图的顶点和边数,并根据要求设定每条边的起始位置,构建邻接表依次将顶点插入到邻接表中。 拓扑排序的函数在该函数中首先要对各顶点求入度,其中要用到求入度的函数,为了避免重复检测入度为零的顶点,设置一个辅助栈,因此要定义顺序栈类型,以及栈的函数:入栈,出栈,判断栈是否为空。 2.各程序模块之间的层次调用关系 第一部分,void CreatGraph(ALGraph *G)函数构建图,用邻接表存储。这个函数没有调用函数。 第二部分,void TopologicalSort(ALGraph *G)输出拓扑排序函数,这个函数首先调用FindInDegree(G,indegree)对各顶点求入度indegree[0……vernum-1];然后设置了一个辅助栈,调用InitStack(&S)初始化栈,在调用Push(&S,i)入度为0者进栈,while(!StackEmpty(&S))栈不为空时,调用Pop(&sS,&n)输出栈中顶点并将以该顶点为起点的边删除,入度indegree[k]--,当输出某一入度为0的顶点时,便将它从栈中删除。 第三部分,主函数,先后调用void CreatGraph(ALGraph *G)函数构建图、void TopologicalSort(ALGraph *G)函数输出拓扑排序实现整个程序。 3.设计的主程序流程
数据结构课程设计报告---几种排序算法的演示(附源代码)
数据结构课程设计报告 —几种排序算法的演示 时间:2010-1-14 一需求分析 运行环境 Microsoft Visual Studio 2005
程序所实现的功能 对直接插入排序、折半插入排序、冒泡排序、简单选择排序、快速排序、堆排序、归并排序算法的演示,并且输出每一趟的排序情况。 程序的输入(包含输入的数据格式和说明) <1>排序种类三输入 <2>排序数的个数的输入 <3>所需排序的所有数的输入 程序的输出(程序输出的形式) <1>主菜单的输出 <2>每一趟排序的输出,即排序过程的输出 二设计说明 算法设计思想 <1>交换排序(冒泡排序、快速排序) 交换排序的基本思想是:对排序表中的数据元素按关键字进行两两比较,如果发生逆序(即排列顺序与排序后的次序正好相反),则两者交换位置,直到所有数据元素都排好序为止。 <2>插入排序(直接插入排序、折半插入排序) 插入排序的基本思想是:每一次设法把一个数据元素插入到已经排序的部分序列的合适位置,使得插入后的序列仍然是有序的。开始时建立一个初始的有序序列,它只包含一个数据元素。然后,从这个初始序列出发不断插入数据元素,直到最后一个数据元素插到有序序列后,整个排序工作就完成了。 <3>选择排序(简单选择排序、堆排序)
选择排序的基本思想是:第一趟在有n个数据元素的排序表中选出关键字最小的数据元素,然后在剩下的n-1个数据元素中再选出关键字最小(整个数据表中次小)的数据元素,依次重复,每一趟(例如第i趟,i=1,…,n-1)总是在当前剩下的n-i+1个待排序数据元素中选出关键字最小的数据元素,作为有序数据元素序列的第i个数据元素。等到第n-1趟选择结束,待排序数据元素仅剩下一个时就不用再选了,按选出的先后次序所得到的数据元素序列即为有序序列,排序即告完成。 <4>归并排序(两路归并排序) 两路归并排序的基本思想是:假设初始排序表有n个数据元素,首先把它看成是长度为1的首尾相接的n个有序子表(以后称它们为归并项),先做两两归并,得n/2上取整个长度为2的归并项(如果n为奇数,则最后一个归并项的长度为1);再做两两归并,……,如此重复,最后得到一个长度为n的有序序列。 程序的主要流程图
《数据结构》课程设计报告-排序综合模板
《数据结构》课程设计报告 专业计算机科学与技术 班级(1) 姓名 学号 指导教师 起止时间2011.10~2011.12
课程设计:排序综合 一、任务描述 (1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存在不同的文件中。 (2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。 二、问题分析 1、功能分析 分析设计课题的要求,要求编程实现以下功能: (1)显示随机数:调用Dip()函数输出数组a[]。数组a[]中保存有随机产生的随机数。 (2)直接选择排序:通过n-I次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换之。 (3)冒泡排序:如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。 (4)希尔排序:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。 (5)直接插入排序:将一个记录插入到已排序好的有序表中,从而得到一个新的、记录数增1的有序表。设整个排序有n个数,则进行n-1趟插入,即:先将序列中的第1个记录看成是一个有序的子序列,然后从第2个记录起逐个进行插入,直至整个序列变成按关键字非递减有序列为止。 (6)显示各排序算法排序后的的数据和时间效率,并比较找出其中2种较快的方法。 2、数据对象分析 排序方式:直接选择排序、冒泡排序、希尔排序、直接插入排序
数据结构课程设计 多关键字排序 高考排序
淮 海 工 学 院 计算机工程学院
课程设计报告
设计名称: 选题名称: 姓 名: 专业班级: 系 (院): 设计时间: 设计地点:
数据结构课程设计 多关键字排序
周宣 学 号: 110821120 网络工程 081
计算机工程学院 2009.12.28~2010.1.12 软件工程实验室、教室
指导教师评语:
成绩:
签名:
年月日
数据结构课程设计报告
第 1 页,共 页
1.课程设计目的
1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序 求解指定问题。
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; 3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水 平,并在此过程中培养他们严谨的科学态度和良好的工作作风。
2.课程设计任务与要求:
任务
题目:多关键字的排序
【问题描述】 多关键字的排序有其一定的实用范围。例如:在进行高考分数处理时,除了需对总分进行排序外, 不同的专业对单科分数的要求不同,因此尚需在总分相同的情况下,按用户提出的单科分数的次序要求 排出考生录取的次序。 【基本要求】 (1)假设待排序的记录不超过 10000,表中记录的关键字数不超过 5,各个学科关键字的范围均为 0 至 100,总分关键字的范围是 0-300。按用户给定的进行排序的关键字的优先关系,输出排序结果。 (2)约定按 LSD 法进行多关键字的排序。在对各个关键字进行排序时采用两种策略:其一是利用 稳定的内部排序法,其二是利用“分配”和“收集”的方法。并综合比较这两种策略。 【测试数据】 由随机数产生器生成。 【实现提示】 由于是按 LSD 方法进行排序,则对每个关键字均可进行整个序列的排序,但在利用通常的内部排序 方法进行排序时,必须选用稳定的排序方法 要求: 1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计 实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准 备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加 大代码的重用率。 2、.设计的题目要求达到一定工作量(300 行以上代码),并具有一定的深度和难度。 3、程序设计语言推荐使用 C/C++,程序书写规范,源程序需加必要的注释; 4、每位同学需提交可独立运行的程序; 5 、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于 10 页(代码不算);
6、课程设计实践作为培养学生动手能力的一种手段,单独考核。
排序综合数据结构课程设计论文
. XX职业技术师X大学 课程设计任务书 理学院数学0902班学生(16)马新月 课程设计课题: 16、综合排序: 利用随机函数随机产生N=200个随机整数,对这些数进行多种方法的排序。 要求:1)至少采用三种方法实现上述问题求解(插入排序、希尔排序、冒泡排序、快速排序、堆排序、归并排序)。把排序后的结果存在不同的文 件中。 2)记录不同排序方法的运行时间,找出自己排序方法中最快的两种方法。 3)统计每种算法所用的比较次数和交换次数,以列表显示出来。 一、课程设计工作日自2012 年2月21日至2012年3月4日 二、同组学生:马新月 三、课程设计任务要求(包括课题来源、类型、目的和意义、基本要求、完成时 间、主要参考资料等): 课题来源:教师提供 课题类型:设计 课程设计的目的 1)使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操 作实现算法,以及它们在程序中的使用方法。 2)使学生掌握软件设计的基本内容和设计方法,并培养学生进行规X化软件设计的能力。3)使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力
XX职业技术师X大学 课程设计评审表学院班学生
1概要 1.1设计目的 数据结构与算法课程主要是研究非数值计算的程序设计问题中所出现的计算机操作对象以及它们之间的关系和操作的学科。数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。学习数据结构与算法是为了将实际问题中涉及的对象在计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。 1)本演示程序对以下6种常用的内部排序算法进行实测比较:冒泡排序,直接插入排序,简单选择排序,快速排序,希尔排序,堆排序; 2)待排序表的元素的关键字为整数。比较的指标为有关键字参加的比较次数和关键字的移动次数(关键字交换记为3次移动); 3)演示程序以以用户和计算机的对话方式执行,在计算机终端上显示提示信息,对随机数组进行排序,并输出比较指标值; 4)最后对结果作出简单分析。 1.2预期目标 按要求输入不同的操作。输入后,根据不同的输入进行不同的操作,最终达到对各算法进行比较的目的。通过此次课程设计主要达到以下目的了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用
数据结构课程设计题目
1.数制转换问题 任意给定一个M进制的数x ,请实现如下要求 1) 求出此数x的10进制值(用MD表示) 2) 实现对x向任意的一个非M进制的数的转换。 3) 至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方法解决)。 2.猴子吃桃子问题 有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。用多种方法实现求出原来这群猴子共摘了多少个桃子。 要求: 1) 采用数组数据结构实现上述求解 2) 采用链数据结构实现上述求解 3) 采用递归实现上述求解 4)其它方法 3.长整数运算 设计一个程序实现两个任意长的整数求和运算。 提示:可利用双项循环链表实现长整数的存储,每个结点含一个整型变量。
4.学生成绩管理系统 现有学生成绩信息文件1(1.txt),内容如下(数据可以自拟) 姓名学号语文数学英语 张明明01 67 78 82 李成友02 78 91 88 张辉灿03 68 82 56 王露04 56 45 77 陈东明05 67 38 47 …. .. .. .. … 学生成绩信息文件2(2.txt),内容如下: 姓名学号语文数学英语 陈果31 57 68 82 李华明32 88 90 68 张明东33 48 42 56 李明国34 50 45 87 陈道亮35 47 58 77 …. .. .. .. … 试编写一管理系统,要求如下: 1) 实现对两个文件数据进行合并,生成新文件3.txt 2) 抽取出三科成绩中有补考的学生并保存在一个新文件4.txt 3) 对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现) 4) 输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现) 5) 要求使用结构体,链或数组等实现上述要求。
排序综合-课程设计报告
课程设计 课程设计名称:排序综合 专业班级: 0000000000000 学生姓名: 0000000000000 学号: 00000000000000 指导教师: 00000000000000 课程设计时间: 2010.6.21-2010.6.25
计算机科学与技术专业课程设计任务书 说明:本表由指导教师填写,由教研室主任审核后下达给选题学生,装订在设计(论文)首页
信息科学与工程学院课程设计成绩评价表课程名称:数据结构课程设计
1、需求分析 1.1、直接插入排序 思路:设有一组关键字{K1,K2,…….,Kn},排序开始变认为K1是一个有序的序列,让K2插入到表长为1的有序序列,使之成为一个表长为2的有序序列, 让K3插入到表长为2的有序序列,使之成为一个表长为3的有序序列,依次类推,最后让Kn插入上述表长为n-1的有序序列,得到一个表长为n的有序序列. 1.2、希尔排序 思路:先取一个正整数d1(d1=1),即所有记录成为一个组为此.一般选d1约为n/2,d2为d1/2,…….,di=1 1.3、快速排序:(递归和非递归) 思路:以第一个关键字K1为控制字,将[K1、K2、….Kn]分成两个子区,使左区的有关键字小于等于K1,右区所有关键字大于等于K1,最后控制居两个子区中间的适当位置。在子区内数据尚处于无序状态。 将右区首、尾指针保存入栈,对左区进行与第(1)步相类似的处理,又得到它的左子区和右子区,控制字区中。 重复第(1)、(2)步,直到左区处理完毕。然后退栈对一个个子区进行相类似的处理,直到栈空 分区处理函数hoare 思路:首先用两个指针i、j分别指向首、尾两个关键字,i=1,j=8。如对(46、56、14、43、95、10、19、72)。第一个关键字46作为控制字,该关键字所属的记录另存储在一个x变量中。从文件右端元素r[j].key开始与控制字