校园十大优秀青年评比数据结构课程设计报告书

合集下载

数据结构课程设计报告范文

数据结构课程设计报告范文

数据结构课程设计报告课程设计报告课程设计题目:链表的创立、插入、删除、修改学生姓名专业计算机科学与技术班级学号指导教师艾9月 30日一、实验题目:实现链表的创立、插入、删除和修改任务:实现链表的创立、插入、删除、修改和输出要求:建立一个简单的人机对话,创立、插入、删除、修改和输出功能能够根据需要选择使用。

二、实验时间、地点:-12-26~ -12-30、信工楼302三、实验目的本次课程设计的主要目的是综合运用所学的数据结构知识解决一个比较实际问题,侧重对链表、数组、字符串、图、树等相关内容的综合应用,使同学们能进一步熟悉掌握数据结构的基础知识,进一步提升自己的解决问题和编程调试能力,为后续专业课程的学习打下良好的基础。

四、实验要求1. 了解数据结构及其分类、数据结构与算法的密切关系;2. 熟悉各种基本数据结构及其操作,学会根据实际问题来选择数据结构;3. 掌握设计算法的步骤和分析方法;4. 掌握数据结构在排序和查找等常见算法中的应用。

5. 独立完成;6.每个人需按照选题规则确定好自己的题目(注意不是多人完成一题,每人独立完成一题),不得以任何理由选择其它的题目,当然在完成自己的题目之后根据个人兴趣能够继续选做其它的题目;7.课程设计完成后严格按照报告格式撰写课程设计报告,并于结束后的第三天上交到学习委员统一交给老师;8.课程设计的成绩由两部分组成:程序检查成绩(40%,每个功能占程序分的20%)+报告检查成绩(40%)+平时考核(20%)五、实现思路链表是一种动态数据结构,她的特点是用一组任意的存储单元(能够是连续的,也能够是不连续的)存放数据元素。

链表中每一个元素成为“结点”,每一个结点都是由数据域和指针域组成的,每个结点中的指针域指向下一个结点。

Head是“头指针”,表示链表的开始,用来指向第一个结点,而最后一个指针的指针域为NULL(空地址),表示链表的结束。

能够看出链表结构必须利用指针才能实现,即一个结点中必须包含一个指针变量,用来存放下一个结点的地址。

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

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

数据结构课程设计实验报告完整版【正文】一、实验目的本实验主要目的是通过实践,掌握数据结构的基本概念、常见数据结构的实现方式以及在实际应用中的应用场景和效果。

二、实验背景数据结构是计算机科学与技术领域中的一个重要概念,是研究数据的组织方式、存储方式、访问方式以及操作等方面的方法论。

在计算机科学领域,数据结构是实现算法和解决问题的基础,因此对数据结构的理解和应用具有重要意义。

三、实验内容本次数据结构课程设计实验主要分为以下几个部分:1. 实验环境的准备:包括选择合适的开发平台、安装必要的软件和工具。

2. 实验数据的收集和处理:通过合适的方式收集实验所需的数据,并对数据进行处理和整理。

3. 数据结构的选择和实现:根据实验需求,选择合适的数据结构,并进行相应的数据结构实现。

4. 数据结构的测试和优化:对所实现的数据结构进行测试,包括性能测试和功能测试,并根据测试结果对数据结构进行优化和改进。

5. 实验报告的撰写:根据实验过程和结果,撰写完整的实验报告,包括实验目的、实验背景、实验内容、实验结果和结论等。

四、实验过程1. 实验环境的准备本实验选择了Visual Studio作为开发平台,安装了相应版本的Visual Studio,并根据官方指引进行了相应的配置和设置。

2. 实验数据的收集和处理本实验选取了一份包含学生信息的数据集,包括学生姓名、学号、性别、年龄等信息。

通过编写Python脚本,成功提取了所需信息,并对数据进行了清洗和整理。

3. 数据结构的选择和实现根据实验需求,我们选择了链表作为数据结构的实现方式。

链表是一种常见的动态数据结构,能够高效地插入和删除元素,适用于频繁插入和删除的场景。

在实现链表时,我们定义了一个节点结构,包含数据域和指针域。

通过指针的方式将节点连接起来,形成一个链式结构。

同时,我们还实现了相关的操作函数,包括插入、删除、查找等操作。

4. 数据结构的测试和优化在完成链表的实现后,我们对其进行了性能测试和功能测试。

数据结构课程设计报告模板

数据结构课程设计报告模板

数据结构课程设计报告模板篇一:数据结构课程设计报告模板课程设计说明书课程名称:数据结构与算法专业:计算机科学与技术班级: 103013姓名:徐粤玲学号:03成绩:完成日期:XX年1 月 12日任务书摘要本文的研究工作在于利用计算机模拟人脑进行下黑白棋,计算机下棋是人工智能领域中的一个研究热点,多年以来,随着计算机技术和人工智能技术的不断发展,计算机下棋的水平得到了长足的进步该程序的最终胜负是由棋盘上岗双方的棋子的个数来判断的,多的一方为胜,少的一方为负。

所以该程序主要运用的战术有削弱对手行动战术、四角优先战术、在游戏开局和中局时,程序采用削弱对手行动力战术,即尽量减少对手能够落子的位置;在游戏终局时则采用最大贪吃战术,即尽可能多的吃掉对手的棋子;而四角优先战术则是贯穿游戏的始终,棋盘的四角围稳定角,不会被对手吃掉,所以这里是兵家的必争之地,在阻止对手进角的同时,自己却又要努力的进角。

关键词:黑白棋编程设计s目录1.引言 ................................................ ................................................... .. (4)2.课题分析 ................................................ ................................................... (7)3.具体设计过程 ................................................ ....................................................8设计思路 ................................................ ...................................................8程序设计流程图 ................................................ (8)函数实现说明 ................................................ .. (12)4.程序运行结果 ................................................ ..................................................145.软件使用说明 ................................................ ..................................................186.结论 ................................................ ................................................... (21)参考文献 ................................................ ................................................... . (23)附录:源代码 ................................................................................................... .. 241.引言数据结构在计算机科学界至今没有标准的定义。

数据结构课程设计报告学生信息管理系统

数据结构课程设计报告学生信息管理系统

题目2.学生信息管理系统一、课程设计目的1.数据构造课程设计是综合运用数据构造课程中学到的几种典型数据构造,以及程序设计语言〔C语言〕,自行实现一个较为完整的应用系统的设计与开发2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据构造在软件开发中的应用。

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

学生信息管理系统:〔1〕熟练掌握链表存储构造及其建立过程和常用操作;〔3〕学会自己调试程序的方法并掌握一定的技巧二、课程设计容建立学生信息管理系统,通过链表实现对学生信息的输入,查找,删除,插入和排序等操作。

三、需求分析1.每位学生的信息有:学号,XX,性别,出生日期,E-mile,,c成绩,数学成绩等,用链表对学生的信息进展存储。

2.全部数据可以只放在存中;3.系统能实现的操作和功能如下:a) 输入学生信息:对不同学生分别输出以下信息:学号,XX,性别,出生日期,E-mile,,c成绩,数学成绩等。

b) 查找学生信息:根据学生的学号或XX对学生的信息进展查找。

c) 删除学生信息:删除某个学生的所有信息。

d) 插入学生信息:将某个学生的信息插入到已经输入的信息中。

e) 显示学生信息:将所有学生的信息显示出来。

f) 排序:将所有学生按某个学科的成绩依次排序。

四、概要设计1.系统构造图〔功能模块图〕2.功能模块说明①.输入学生信息,creat()函数:建立单向链表,组织循环,将学生的信息依次录入。

②:查找学生信息:a.按学号查找,find1〔〕函数;b.按XX查找,find2〔〕函数;③.删除学生信息,del〔〕函数:建立指针,在链表中寻找要删除信息的学生的学号,找到后p->next=p->next->next,将其删除。

④.插入学生信息,insert〔〕函数;输入要插入的信息,建立指针,寻找要插入的节点。

数据结构课程设计报告书

数据结构课程设计报告书

1引言本设计使用C语言编写程序,以栈为主体实现功能,所以首先我们要认识一下栈。

栈是限定仅在表尾进行插入或删除操作的线性表,其存取数据时按照后进先出的原则进行。

而此次课程设计就是利用栈的这一特性并结合栈的输入、输出、判空等基本操作,来实现栈的三种实际应用:数制转换,行编辑和括号匹配。

2问题分析2.1 设计内容的分析本次课程设计的目标是使用C语言编写一个程序,当使用者进入程序时,首先出现一个菜单项,使用者可以选择所要实现的功能,从而进入相应的程序模块:数制转换:进入此模块后,程序提示输入任意一个十进制数和所要转换的进制,程序运行后得到相应进制的数据。

行编辑:进入模块后,程序提示输入原始数据,运行时当遇到#时退格一个,当遇到@时,清空所在行中之前的所有数据;当遇到\n时,完成前一行的输入处理,进行下一行的输入;当遇到¥时,全文输入编辑结束。

括号匹配:进入模块后,程序提示输入所要检验的括号以#为结束符,当括号匹配不正确时,程序输出相应的:左右括号匹配次序不正确,左括号多于右括号,右括号多于左括号。

当左右括号匹配无误时,输出左右括号匹配正确。

2.2 程序中用到的数据结构本程序主要是运用栈的相关知识,所以为了实现上述的三种功能,需要定义栈的结构用于储存数据:typedef char ElemType;//定义用户变量,代替char,便于以后修改typedef struct{ElemType *base;//在栈构造之前和销毁之后,base的值为NULLElemType *top;//栈顶指针int stacksize;//当前已分配的存储空间,以元素为单位}SqStack;实现第一个模块功能时,需要使用while语句进行栈的输入输出。

实现第二个模块功能时,需要使用while语句和swicth语句的嵌套来进行文本编辑实现第三个模块功能时,需要使用if、else语句的多重嵌套来判断匹配3总体设计3.1 总体设计思路本程序主要首先在主函数通过调用switch 语句来选择需要实现的功能,从而进入相应的函数模块。

数据结构课程设计报告(仓库管理系统、通讯录管理系统、猴子选大王、

数据结构课程设计报告(仓库管理系统、通讯录管理系统、猴子选大王、

数据布局课程设计陈述目录第一章设计目的 (3)第二章设计任务及要求 (3)一、根本要求 (3)二、内容 (3)第三章标题问题阐发与解答 (4)一、仓库办理系统 (4)1.标题问题要求 (4)2.应用程序功能 (4)3.输入数据类型、格式和内容限制 (6)4.主要模块的算法描述 (6)5.源程序代码 (7)二、通讯录办理系统 (13)1.标题问题要求 (13)2.应用程序功能 (13)3.输入数据类型、格式和内容限制 (15)4.主要算法模块描述 (16)5.源程序代码 (16)三、猴子选大王 (22)1.标题问题要求: (22)2.应用程序功能 (22)3.输入数据类型、格式和内容限制 (23)4.主要算法模块描述 (23)5.源程序代码 (23)四、二叉树运算2 (26)1.标题问题要求 (26)2.应用程序功能 (26)3.输入数据类型、格式和内容限制 (26)4.主要算法模块描述 (26)5.源程序代码 (28)第一章设计目的一、培养学生运用算法与数据布局的根本常识解决实际编程中的数据布局设计和算法设计问题。

二、培养学生独立设计程序与解决问题的能力,培养学生团队协作集成程序模块及调试能力。

三、培养学生初步的软件设计及软件测试的能力。

第二章设计任务及要求一、根本要求学生必需仔细阅读《数据布局》课程设计指导书,当真主动完成课设的要求。

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

学生要阐扬自主学习的能力,充实操纵时间,安排好课设的时间方案,并在课设过程中不竭检测本身的方案完成情况,及时的向教师陈述请示。

课程设计按照教学要求需要一周时间完成,一周中每天〔按每周5天〕至少要上3-4小时的机来调试C语言设计的程序,总共至少要上机调试程序15小时。

按照设计陈述要求编写设计陈述,主要内容包罗目的、意义、道理和实现方法简介、过程阐发及说明、尝试成果情况说明、结论。

每个人必需有可运行的程序,学生能对本身的程序面对教师提问并能熟练地解释清楚,学生答复的问题和程序运行的成果作为评分的主要衡量尺度。

课题数据结构课程设计报告书

课题数据结构课程设计报告书

北方民族大学课程设计课程名称: 数据结构及算法课程设计院(部)名称:信息及计算科学学院组长姓名:金龙龙 20080544同组人员姓名:任杰马鹏起赵俞军 20080576赵庆康 20080570设计时间: 2015.6.1---2015.6.24金龙龙 200805442、一元多项式计算任务:能够按照指数降序排列建立并输出多项式;能够完成两个多项式的相加、相减,并将结果输入;在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法;存储结构:链表存储#include<stdio.h>#include<malloc.h>#include<stdlib.h>#define null 0typedef struct polynode{int coef;int exp;struct polynode *next;}node;node *create(){node *h,*r,*s;int c,e;h=(node*)malloc(sizeof(node));r=h;printf("coef:");scanf("%d",&c);printf("exp: ");scanf("%d",&e);while(c!=0){s=(node*)malloc(sizeof(node)); s->coef=c;s->exp=e;r->next=s;r=s;printf("coef:");scanf("%d",&c);printf("exp: ");scanf("%d",&e);}r->next=NULL;return(h);}void arrange(node *pa){node *h=pa,*p,*q,*r;for(p=pa;p->next!=NULL;p=p->next);r=p;for(h=pa;h->next!=r;){for(p=h;p->next!=r&&p!=r;p=p->next)if((p->next)->exp>(p->next->next)->exp) {q=p->next->next;p->next->next=q->next;q->next=p->next;p->next=q;}r=p;}}void neipai(node *head){ node *p,*q,*r,*Q;p=head;if(head->next->next!=NULL){for(q=p->next;q!=NULL;q=q->next)for(p=q->next,r=q;p!=NULL;)if(q->exp==p->exp){q->coef=q->coef+p->coef; r->next=p->next;Q=p;p=p->next;free(Q);}else{r=r->next;p=p->next;}} }void insert(node *head,node *s){node *pre,*p;pre=head;p=pre->next;while(p!=NULL){if(p->exp > s->exp) break;pre=p;p=p->next;}s->next=p;pre->next=s;}node *copyList(node *head){node *l = NULL, *newHead;newHead = (node *) malloc(sizeof(node)); newHead->next = NULL;head = head->next;while (head != NULL){l = (node *) malloc(sizeof(node));l->coef = head->coef;l->exp = head->exp;insert(newHead, l);head = head->next;}return newHead;}void print(node *p){ while(p->next!=NULL){p=p->next;printf(" %d*x^%d",p->coef,p->exp);}}void polyadd(node *ha, node *hb){node *p,*q,*pre,*temp;int sum;p=ha->next;q=hb->next;pre=ha;while(p!=NULL&&q!=NULL){if(p->exp==q->exp){sum=p->coef+q->coef;if(sum!=0){p->coef=sum;pre->next=p;pre=pre->next;p=p->next;temp=q;q=q->next;free(temp); }else{temp=p->next;free(p);p=temp; temp=q->next;free(q);q=temp; }}else if(p->exp<q->exp){pre->next=p;pre=pre->next;p=p->next;}else{pre->next=q;pre=pre->next;q=q->next;}}if(p!=NULL)pre->next=p;elsepre->next=q;}void polysub(node *ha,node *hb) {node *p,*q,*pre,*temp,*x; int sum;p=ha->next;q=hb->next;x=q;pre=ha;while(x!=null){ x->coef=-x->coef;x=x->next;}while(p!=NULL&&q!=NULL){if(p->exp==q->exp)sum=p->coef+q->coef;if(sum!=0){p->coef=sum;pre->next=p;pre=pre->next;p=p->next;temp=q;q=q->next;free(temp); }else{temp=p->next;free(p);p=temp; temp=q->next;free(q);q=temp; }}else if(p->exp<q->exp){pre->next=p;pre=pre->next;p=p->next;}elsepre->next=q;pre=pre->next;q=q->next;}}if(p!=NULL)pre->next=p;elsepre->next=q;}void main(){node *ha,*hb,*hc,*hd;printf("please input the coef and exp of ha:\n"); ha=create();arrange(ha);neipai(ha);hc=copyList(ha);print(ha);printf("\n");printf("please input the coef and exp of hb:\n");hb=create();arrange(hb);neipai(hb);hd=copyList(hb);print(hb);printf("\n");printf("add is :\n"); polyadd(ha,hb);print(ha);printf("\n");printf("sub is :\n"); polysub(hc,hd);print(hc);}运行结果赵俞军 200805767、猴子选大王任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。

数据结构课程设计报告书

数据结构课程设计报告书

独立完成
课程设计题目
链表的操作: 用链表建立通讯录。通讯录内容有:姓名、通讯地址、电话号码。 要求:(1)通讯录是按姓名项的字母顺序排列的; (2)能查找通讯录中某人的信息; [提示] 可用链表来存放这个通讯录,一个人的信息作为一个 结点。成链的过程可以这样考虑:先把头结点后面的第一个数据 元素结点作为链中的首结点,也是末结点。从第二个数据开始逐 一作为‘工作结点’,需从链表的首结点开始比较,如果‘工作 结点’的数据元素的姓名字符串比链中的‘当前结点’的数据元 素的姓名字符串小,就插在其前面。否则,再看后面是否还有结 点,若没有结点了就插在其后面成为末结点;若后面还有结点, 再与后面的结点逐一比较处理。
课程设计题目(**)

规定:输入数据形式和范围:20以内的整数(如果做得 更好可以输入学校的名称,运动项目的名称) 输出形式:有中文提示,各学校分数为整形 界面要求:有合理提示,每个功能可以设立菜单,根据 提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是 要求运动会的相关数据要存储在数据文件中。(数据文 件的数据读写方法等相关内容在c语言程序设计的书上, 请自学解决)请在最后的上交资料中指明你用到的存储 结构; 测试数据:要求使用1、全部合法数据;2、整体非法数 据;3、局部非法数据。进行程序测试,以保证程序的稳 定。测试数据及测试结果请在上交的资料中写明;
演示结束!
THANK YOU FOR WATCHING!
感谢聆听!
独立完成
课程设计题目
约瑟夫环问题:
设有n个人按顺时针方向围坐一圈,先从某个人开 始报数,数到m的人出列,接着从出列的下一个人开始重 新从1报数,数到m的人又出列,如此下去,直至所有人全 部出列为止。设计确定他们的出列顺序的程序。

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

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

《数据结构》课程设计报告设计题目航班信息的查询与检索专业电子信息工程班级姓名学号完成日期2010-6-28目录1. 问题描述………………………………………………页码2. 系统设计………………………………………………页码3. 数据结构与算法描述…………………………………页码4. 测试结果与分析………………………………………页码5. 总结…………………………………………………页码6. 参考文献………………………………………………页码附录程序源代码…………………………………………页码航班信息的查询与检索1. 问题描述:这学期,我们在余先伦老师的带领下,大致学习了一下《数据结构》,实现了简单的数据结构算法。

现在,我们将完成简单的数据结构课程设计。

在数据结构的学习中我们知道,排序和查找是在数据结构中使用频率非常高。

为了能够快速有效地进行查询与检索,我们需要对记录按关键字进行排列。

选择《航班信息查询与检索》这个课题,主要是因为当今时代的需求。

随着科技与经济的发展,当今乘飞机的人越来越多,这时,快速的了解各类航班的班次、时间、价格及机型的信息将备受关注。

在我开发的这个《航班信息查询与检索》这个系统中,航班号将成为关键字,而且是具有结构特点的一类关键字。

通过关键字的键入,你将获得你所需要的航班的全部信息。

2. 系统设计2.1 设计目标:通过一定的数据结构,实现对信息的查询与检索并按要求输出。

试设计一个航空客运定票系统。

[基本要求]每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。

系统能实现的操作和功能如下: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课时,学习排序和查找算法,掌握各类算法的实现和应用。

数据结构专业课程设计方案报告模板参考

数据结构专业课程设计方案报告模板参考

数据结构专业课程设计方案报告模板参考嘿,大家好!今天我来给大家分享一份关于数据结构专业课程的方案设计报告。

作为一名有着十年经验的大师,我可是见证了各种方案的诞生和演变。

那么,咱们废话不多说,直接进入主题吧!一、课程设计背景数据结构是计算机科学与技术领域的基础课程,对于培养同学们的逻辑思维能力、编程能力和算法设计能力具有重要意义。

随着信息技术的不断发展,数据结构的应用越来越广泛,已经成为各类软件开发、等领域的基础。

因此,本课程设计旨在帮助同学们掌握数据结构的基本原理和算法,提高同学们的实际编程能力。

二、课程设计目标1.理解数据结构的基本概念,熟悉各类数据结构的特点和应用场景。

2.学会使用常见的数据结构进行问题求解,具备分析问题和设计算法的能力。

3.掌握数据结构的基本算法,能够实现并优化相关算法。

三、课程设计内容1.线性表定义和特点常见操作(插入、删除、查找、排序等)应用场景(顺序存储、链式存储等)2.栈和队列定义和特点常见操作(入栈、出栈、入队、出队等)应用场景(递归、表达式求值、广度优先搜索等)3.树与二叉树定义和特点常见操作(创建、遍历、查找、插入、删除等)应用场景(查找排序、哈希表、优先队列等)4.图定义和特点常见操作(创建、遍历、查找、最短路径等)应用场景(社交网络、地图导航、最小树等)5.算法设计与分析常见算法(排序、查找、图算法等)时间复杂度分析空间复杂度分析四、课程设计方法1.理论教学:通过课堂讲解,使同学们了解数据结构的基本概念、原理和方法。

2.实践教学:通过上机实验,让同学们动手实现相关算法,提高编程能力。

3.课后作业:布置一些具有代表性的题目,让同学们独立思考,巩固所学知识。

五、课程设计评价1.课堂表现:考察同学们的出勤、发言、作业完成情况等。

2.上机实验:考察同学们的编程能力、算法实现情况等。

3.课后作业:考察同学们对知识点的掌握程度。

六、课程设计进度安排1.第一周:线性表2.第二周:栈和队列3.第三周:树与二叉树4.第四周:图5.第五周:算法设计与分析注意事项:1.理解深度与广度平衡每个数据结构都有其深奥的理论和复杂的实现细节,但初学者容易陷入要么只懂皮毛要么过度深入研究两极分化的困境。

沈阳工程学院-数据结构课设报告

沈阳工程学院-数据结构课设报告

沈阳工程学院课程设计设计题目:约瑟夫环、安排教学计划系别信息学院班级学生姓学号指导教师姜柳、吕海华职称副教授、讲师起止日期:年月日起——至年月日止沈阳工程学院课程设计任务书课程设计题目:约瑟夫环系别信息学院班级学生姓名学号指导教师姜柳、吕海华职称副教授、讲师课程设计进行地点:实训F座任务下达时间:年月日起止日期:年月日起——至年月日止教研室主任张欣年月日批准一、课程设计的原始资料及依据约瑟夫(Joeph)问题的一种描述是:编号为1、2、…n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。

一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。

报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。

设计一个程序求出出列顺序及最后一个出列的人。

二、课程设计主要内容及要求1.约瑟夫环①. 认真阅读资料,掌握程序设计模块化的思想。

②. 要求在设计的过程中,建立清晰的层次结构。

③. 画出主要的功能结构图和主要模块的流程图。

④. 建立一个具有n个结点,无头结点的循环链表。

⑤. 确定参与人数及初始报数上限值m。

⑥. 不断地从链表中删除链结点,直到链表为空。

三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、设计小组评语、参考文献等。

一般不应少于3000字。

2.在适当位置配合相应的实验原理图、数据通路图、微程序流程图、实验接线图、微指令代码表等图表进行说明。

应做到文理通顺,内容正确完整,书写工整,装订整齐。

3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。

设计小组评语处注明设计组编号、设计组组长、设计组成员,并由设计组组长给出评语。

数据结构课程设计报告范例

数据结构课程设计报告范例

Guangxi University of Science and Technology 课程设计报告课程名称:算法与编程综合实习课题名称:姓名:学号:院系:计算机科学与通信工程学院专业班级:通信指导教师:完成日期:2015年1月15日目录第1部分课程设计报告 (3)第1章课程设计目的 (3)第2章课程设计内容和要求 (4)问题描述 (4)设计要求 (4)第3章课程设计总体方案及分析 (4)问题分析 (4)概要设计 (7)详细设计 (7)调试分析 (10)测试结果 (10)参考文献 (12)第2部分课程设计总结 (13)附录(源代码) (14)第1部分课程设计报告第1章课程设计目的仅仅认识到队列是一种特殊的线性表是远远不够的,本次实习的目的在于使学生深入了解队列的特征,以便在实际问题背景下灵活运用它,同时还将巩固这种数据结构的构造方………………………………………………………………………………………………………………………………………………………………………………………..(省略)第2章课程设计内容和要求问题描述:迷宫问题是取自心理学的一个古典实验。

在该实验中,把一只老鼠从一个无顶大盒子的门放入,在盒子中设置了许多墙,对行进方向形成了多处阻挡。

盒子仅有一个出口,在出口处放置一块奶酪,吸引老鼠在迷宫中寻找道路以到达出口。

对同一只老鼠重复进行上述实验,一直到老鼠从入口走到出口,而不走错一步。

老鼠经过多次试验最终学会走通迷宫的路线。

设计一个计算机程序对任意设定的矩形迷宫如下图A所示,求出一条从入口到出口的通路,或得出没有通路的结论。

???????????????????????????????????????????????????? ??图A设计要求:要求设计程序输出如下:(1) 建立一个大小为m×n的任意迷宫(迷宫数据可由用户输入或由程序自动生成),并在屏幕上显示出来;(2)找出一条通路的二元组(i,j)数据序列,(i,j)表示通路上某一点的坐标。

数据结构课设报告

数据结构课设报告

《数据结构》课程设计报告一、设计目的《数据结构》是一门实践性较强的软件基础课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。

本课程设计的目的就是要达到理论与实际应用相结合,使同学们能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。

二、设计要求1、通过这次设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解。

同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

2、学生必须仔细研读《数据结构》课程设计(实习)要求,以学生自学为主、指导教师指导为辅,认真、独立地完成课程设计的任务,有问题及时主动与指导教师沟通。

3、本次课程设计按照教学要求需要在三周时间内独立完成,学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时地向指导教师汇报。

4、编程语言任选。

一〉.基础类题目1.猴子选大王(*)任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1--m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。

要求:(注:分别顺序存储结构和链式存储实现)输入数据:输入m,n。

m,n 为整数,n<m输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能㈠、数据结构与核心算法的设计描述链式存储实现:#include<iostream.h>#include<malloc.h>#include<stdio.h>typedef struct LNode{int data;struct LNode *next;}LNode, *LinkList;void CreateList(LinkList &L,int m)//尾插法建立单向循环链表int ListDetele(LinkList &q,int n)//删除被点到的猴子㈡、程序调试及运行结果分析㈢、程序清单#include<iostream.h>#include<malloc.h>#include<stdio.h>typedef struct LNode{int data;struct LNode *next;}LNode, *LinkList;void CreateList(LinkList &L,int m){ //尾插法建立单向循环链表int i;L = (LinkList)malloc(sizeof(LNode));L->next = NULL;LNode *r;r = L;for(i=1;i<=m;i++){LNode *p;p = (LinkList)malloc(sizeof(LNode));p->data = i;r->next = p;r = p;}r->next=L->next;}int ListDetele(LinkList &q,int n) {LinkList s;int j=1;while(q->next!=q){ while(j<=n-1){q=q->next;j++;}s=q->next;q->next=s->next;free(s);j=1;}cout<<" 猴王: "<<q->data<<endl;return 1;}void main(){LinkList q;int n,m;cout<<"输入猴子个数m和n:";cin>>m>>n;CreateList(q,m);ListDetele(q,n);}顺序存储结构:㈠、数据结构与核心算法的设计描述#include<iostream.h>void main(){int n,m;cout<<"输入猴子数m和报数n:";cin>>m>>n;int *a=new int[m];int i,sum=0,count=m;//存剩余猴子数for(i=0;i<m;i++)a[i]=1;i=0;while(i<=m){if(i==m)i=0;//当i=n时,循环回去sum+=a[i];if(sum==n)//当报到n时{sum=a[i]=0; //淘汰倒霉猴子;即赋0count--;//剩余猴子数-1if(count==1)break;//剩1只时结束}i++;}for(i=0;i<m;i++)if(a[i]!=0)cout<<"猴王是"<<i+1<<endl;delete []a;}㈡、程序调试及运行结果分析2.线索二叉树(**)任务:1.建立中序线索二叉树,并且中序遍历;2. 求中序线索二叉树上已知结点中序的前驱和后继;㈠、数据结构与核心算法的设计描述#include<malloc.h>#include<stdlib.h>#include<iostream.h>#define MAX 100typedef enum PointerTag {Link,Thread}; //Link==0:指针,Thread==1:线索typedef struct BitNode{char data;struct BitNode *lchild,*rchild;//左右孩子的指针PointerTag LTag,RTag; //左右标志}BitNode, *Bitree;Bitree pre=NULL;Bitree point[MAX+1];int CreatBiTree(Bitree &T)//先序创建二叉树void InThreading(Bitree p)//中序遍历线索化二叉树int InOrderThreading(Bitree &Thrt,Bitree T)//中序遍历线索化二叉树T,并将其中序线索化,Thrt指向头节点Bitree InPre(Bitree p)//前驱Bitree InNext(Bitree p)//后继int Traverse_Thr(Bitree T)//各个节点的前驱和后继㈡、程序调试及运行结果分析㈢、程序清单#include<malloc.h>#include<stdlib.h>#include<iostream.h>#define MAX 100typedef enum PointerTag {Link,Thread}; //Link==0:指针,Thread==1:线索typedef struct BitNode{char data;struct BitNode *lchild,*rchild;//左右孩子的指针PointerTag LTag,RTag; //左右标志}BitNode, *Bitree;Bitree pre=NULL;Bitree point[MAX+1];int CreatBiTree(Bitree &T)//先序创建二叉树{ //该节点非空返回1,双亲节点对应标志Link,//空时返回0,双亲节点对应标志应为Threadchar ch;cout<<"输入结点元素(#表示空):";cin>>ch;if(ch=='#'){T=NULL;return 0;}else{if(!(T=(BitNode *)malloc(sizeof(BitNode)))) {cout<<"存储分配失败"<<endl;exit(1);}T->data=ch;if(CreatBiTree(T->lchild))T->LTag=Link;elseT->LTag=Thread;if(CreatBiTree(T->rchild))T->RTag=Link;elseT->RTag=Thread;}return 1;}void InThreading(Bitree p)//中序遍历线索化二叉树{if(p!=NULL){InThreading(p->lchild);//左子树线索化if(p->lchild==NULL) //前驱线索{p->LTag=Thread;p->lchild=pre;}if(pre->rchild==NULL)//后继线索{pre->RTag=Thread;pre->rchild=p;}pre=p; //保持pre指向p的前驱InThreading(p->rchild);//右子树线索化}}int InOrderThreading(Bitree &Thrt,Bitree T){//中序遍历线索化二叉树T,并将其中序线索化,Thrt指向头节点Thrt=(Bitree)malloc(sizeof(BitNode)); //申请头结点地址if(Thrt==NULL) exit(1);Thrt->LTag=Link; //建立头结点Thrt->RTag=Thread;Thrt->rchild=Thrt;//右指针回指if(T==NULL)Thrt->lchild=Thrt;//若二叉树为空,则左指针回指else{Thrt->lchild=T;pre=Thrt;InThreading(T); //中序遍历线索化二叉树pre->rchild=Thrt;pre->RTag=Thread;//最后一个结点的线索化Thrt->rchild=pre;}return 1;}Bitree InPre(Bitree p)//前驱{Bitree q;q=p->lchild;if(p->LTag==Thread)return(p->lchild);if(q==NULL){return NULL;}while(q->RTag==Link){q=q->rchild;}return (q);}Bitree InNext(Bitree p)//后继{Bitree q;q=p->rchild;if(p->RTag==Thread)return(p->rchild);if(q==NULL){return NULL;while(q->LTag!=Thread){q=q->lchild;}return(q);}int Traverse_Thr(Bitree T){int i=0;Bitree p;p=T->lchild;cout<<"1--代表是,0--代表否"<<endl;cout<<"是否有"<<"前驱"<<"节点"<<"是否有"<<"后继"<<"顶点序号"<<endl;cout<<" 前驱"<<" "<<"节点"<<"后继"<<"while(p!=T)//空树或遍历结束时p==T{while(p->LTag==Link)p=p->lchild;//找开始结点cout<<p->LTag<<" ";if(p->LTag==Thread){cout<<InPre(p)->data<<" ";}elsecout<<" ";cout<<p->data<<" ";point[i++];cout<<p->RTag<<" ";if(p->RTag==Thread)cout<<InNext(p)->data<<" ";elsecout<<" ";cout<<i<<endl; point[i]=p;while(p->RTag==Thread&&p->rchild!=T)//寻找后继结点{p=p->rchild;cout<<p->LTag<<" ";if(p->LTag==Thread){cout<<InPre(p)->data<<" ";}elsecout<<" ";cout<<p->data<<" ";point[i++];cout<<p->RTag<<" ";if(p->RTag==Thread)cout<<InNext(p)->data<<" ";elsecout<<" ";cout<<i<<endl;point[i]=p;}p=p->rchild;}return i;}int main(){Bitree T,Thrt,prenode,Nextnode;int n,index;char str;cout<<"先序创建二叉树"<<endl;CreatBiTree(T);cout<<endl;InOrderThreading(Thrt,T);n=Traverse_Thr(Thrt);do {cout<<"请输入你要查找节点的序号(按中序输出时的序号)"<<endl;cin>>index;if(index<0||index>n){cout<<"请输入数的序号大于0并小于等于节点数"<<endl;return 0;}prenode=InPre(point[index]);Nextnode=InNext(point[index]);if(point[index]->LTag==Thread)cout<<"你要查找第"<<index<<"个节点的前驱结点为"<<prenode->data<<endl;elsecout<<"你要查找第"<<index<<"个节点无前驱结点"<<endl;if(point[index]->RTag==Thread)cout<<"你要查找第"<<index<<"个节点后继结点为"<<Nextnode->data<<endl;elsecout<<"你要查找第"<<index<<"个节点无后继结点"<<endl;cout<<"你是否要继续?y--是;n--否"<<endl;cin>>str;}while(str=='Y'||str=='y');return 0;}3.宿舍管理查询软件(**)任务:为宿舍管理人员编写一个宿舍管理查询软件, 程序设计要求:(1)采用交互工作方式(2)可以增加、删除、修改信息(3)建立数据文件,数据文件按关键字(姓名、学号、房号)进行排序(选择、快速排序、堆排序等任选一种)(4) 查询 : a.按姓名查询 ;b.按学号查询 ;c按房号查询(5) 打印任一查询结果(可以连续操作)㈠、数据结构与核心算法的设计描述#include<iostream.h>#include<string.h>#include<stdlib.h>#define MAXSIZE 100int n;typedef struct //学生结构体的定义{int num;//学号char name[10];//姓名char room[10];//房号}Student;typedef struct SqList//顺序表结构体的定义{Student Stu[MAXSIZE+1];//定义一个存放学生信息的数组}SqList;void CreatInfo(SqList &L) //建立学生信息void print(SqList &L)//输出顺序表void Insertsort(SqList &L)//直接插入排序(房号优先)void InPut(SqList &L)//添加新的学生信息int Partition(SqList &L,int i,int j)//快速排序void Quicksort(SqList L,int low,int high)//快速排序void Selectsort(SqList &L)//选择排序(姓名优先) void find(SqList &L,int n)//查找修改学生并打印㈡、程序调试及运行结果分析1.建立学生信息2.插入学生信息并插入排序(房号优先)3.选择排序(姓名优先)4.快速排序5.查找修改学生并打印㈢、程序清单#include<iostream.h>#include<string.h>#include<stdlib.h>#define MAXSIZE 100int n;typedef struct //学生结构体的定义{int num;//学号char name[10];//姓名char room[10];//房号}Student;typedef struct SqList//顺序表结构体的定义{Student Stu[MAXSIZE+1];//定义一个存放学生信息的数组}SqList;void CreatInfo(SqList &L){cout<<"请输入你要创建的学生数:"<<endl;cin>>n;cout<<"学生的信息:"<<endl;cout<<"姓名学号房号:"<<endl;for(int i=1;i<=n;i++){cin>>L.Stu[i].name>>L.Stu[i].num>>L.Stu[i].room;}}void print(SqList &L)//输出顺序表{cout<<"输出学生信息:"<<endl;for(int i=1;i<=n;++i){cout<<L.Stu[i].name<<" "<<L.Stu[i].num<<" "<<L.Stu[i].room<<endl;}}void Insertsort(SqList &L)//直接插入排序(房号优先){int i,j;for(i=2;i<=n;++i)if(strcmp(L.Stu[i].room,L.Stu[i-1].room)<0){L.Stu[0]=L.Stu[i];for(j=i-1;strcmp(L.Stu[0].room,L.Stu[j].room)<0;--j)L.Stu[j+1]=L.Stu[j];L.Stu[j+1]=L.Stu[0];}}void InPut(SqList &L){n++;cout<<"输入学生的信息:"<<endl;cout<<"姓名学号房号:"<<endl;cin>>L.Stu[n].name>>L.Stu[n].num>>L.Stu[n].room;}int Partition(SqList &L,int i,int j)//快速排序{Student p;L.Stu[0]=L.Stu[i];p=L.Stu[i];while(i<j){while(i<j &&L.Stu[j].num>=p.num)j--;L.Stu[i]=L.Stu[j];while(i<j &&L.Stu[i].num<=p.num)i++;L.Stu[j]=L.Stu[i];}L.Stu[i]=p;return i;}void Quicksort(SqList L,int low,int high)//快速排序{int location;if(low<high){location=Partition(L,low,high);Quicksort(L,low,location-1); //对左区间递归排序Quicksort(L,location+1,high); //对右区间递归排序}}void Selectsort(SqList &L)//选择排序(姓名优先){Student t;int i,j,k;for(i=1;i<=n;i++){k=i;for(j=i+1;j<=n;j++)if(strcmp(L.Stu[j].name,L.Stu[k].name)<0)k=j;if(k!=i){t=L.Stu[i];L.Stu[i]=L.Stu[k];L.Stu[k]=t;}}}void find(SqList &L,int n)//查找学生信息{int t,m=1,i;char ch,a;cout<<"请输入你要查找的学号:"<<endl;cin>>t;cout<<"该学生的信息为:"<<endl;while(m<=n&&L.Stu[m].num!=t)m++;if(L.Stu[m].num==t){cout<<"学号是:"<<L.Stu[m].num<<"\t姓名:"<<L.Stu[m].name<<"\t房号:"<<L.Stu[m].room<<endl;cout<<"是否修改信息(Y/N):";cin>>a;if(a=='y'||ch=='Y'){cout<<"1.修改学号"<<endl;cout<<"2.修改姓名"<<endl;cout<<"3.修改房号"<<endl;cout<<"请选择:";cin>>i;switch(i){case 1:cout<<"输入修改学号:";cin>>L.Stu[m].num;break;case 2:cout<<"输入修改姓名:";cin>>L.Stu[m].name;break;case 3:cout<<"输入修改房号:";cin>>L.Stu[m].room;break;default:cout<<"输入错误!"<<endl;}}}elsecout<<"没有你要查找的学生!"<<endl;cout<<"是否打印学生信息(Y/N):";cin>>ch;if(ch=='y'||ch=='Y')print(L);}int main(){SqList L;int k;CreatInfo(L);//创建学生信息print(L);//按输入顺序打印出顺序表loop: cout<<"请选择排序方式:"<<endl;cout<<"1 插入学生信息"<<endl;cout<<"2 插入排序(房号优先)"<<endl;cout<<"3 选择排序(姓名优先)"<<endl;cout<<"4 快速排序"<<endl;cout<<"5 按查找修改学生并打印"<<endl;cout<<"0 退出排序程序"<<endl;cin>>k;if(k!=0){switch(k){case 1:InPut(L);break;case 2:Insertsort(L);//进行插入排序print(L);break; //输出插入排序后的顺序表case 3:Selectsort(L);//进行选择排序print(L);break;//输出排序后的顺序表case 4:Quicksort(L,1,n);//选择快速排序print(L);break;//输出排序后的顺序表case 5:find(L,n);break;//查找学生信息default:cout<<"输入错误!"<<endl;}}cout<<endl;goto loop;return 0;}4.停车场管理(**)任务:设停车场是一个可以停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。

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

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

《数据结构》课程设计报告课程设计报告----数据结构学院:软件学院班级:11级二班学号:54110211姓名:刘海鲸辅导老师:刘亚波老师《数据结构》课程设计报告姓名:刘海鲸学号:54110211实验室:座位号:提交日期:2013.3.13成绩:指导教师:刘亚波问题解析(对问题的分析、解题思路与解题方法):实验目的为使我们学习完数据结构课程后,全面深入理解数据结构知识,掌握应用技巧,提高应用与分析能力,并培养学生综合运用所学理论知识求解问题的能力和协作精神。

解题思路(分析):题目要求独立编写程序,完成对起泡排序,直接插入排序,简单选择排序,快速排序,希尔排序,堆排序6种内排序算法的比较,并且使用至少5组不同的输入数据(记录个数不小于1000个,其中包括完全正序,完全逆序和无序情况)进行排序,比较各组记录与各种排序方法在关键字比较次数和关键字移动次数这两个指标上的差异。

因此只需对文件进行排序并计算出两项指标针对某一组特定数据在不同排序方法中的值,既可以完成题目要求。

编写正确的排序算法,使用程序读取不同文件,并定义变量,记录排序过程中两项指标的值,就是本题的解题思路。

解题方法:使用Code::blocks作为本次实验的开发工具,使用C++完成程序。

首先使用数据产生程序来产生所需的5个数据文件,使用了C++中cstdlib文件中的rand()函数和srand()函数共同产生3组伪随机数;在另一个工程中创建了data.h与control.h两个头文件和main.cpp源文件,其中data.h定义了数据类型(模板类),包括主要的排序函数和数据成员,control.h定义了控制类,来完成界面控制,数据文件读取和排序功能的实现,main.cpp是对控制类对象的控制函数conmian()的调用来完成整个程序。

最后运行程序来完成对比较指标的统计并进行分析,对得出结果进行解释。

任务分工:本实验由本人独立完成。

进度安排:为第一次实验课将6个内排序算法完成并调试成功,周末之前完成界面控制并对排序结果进行分析,第二次实验之前完成课程设计报告,第二次试验对程序结果进行最后检查并提交实验报告。

数据结构课程设计报告(模版)范文

数据结构课程设计报告(模版)范文

攀枝花学院学生课程设计(论文)题目:*************学生姓名:********学号:**所在院(系):数学与计算机学院专业:计算机科学与技术专业班级:2011级计算机科学与技术1班指导教师:蒋斌职称:讲师2013年12月19 日攀枝花学院本科学生课程设计任务书注:任务书由指导教数据结构课程设计评定表I摘要本次课程设计是利用数据结构的知识编写一个能够实现学生配对的问题的软件,以达到在每一首歌曲中能够有学生配对来进行舞蹈表演。

为了实现这一个功能我们用利用已学的知识进行编写程序。

通过学习数据结构课程和c语言的知识,主要利用数据结构的队列和C语言知识来实现软件的功能。

主要是把男女生分别放在两个队列中,要涉及到队列的判断和循环等算法。

判断队列的满和空的知识来完成。

关键字:学生搭配问题,数据结构,队列,C语言,软件,功能I I目录摘要 (II)1.方案设计 (1)1.1问题描述 (1)1.2需求分析 (1)1.3运行环境 (1)1.4概要设计 (2)2.算法设计 (3)2.1算法设计思想 (3)2.2算法设计的对应方式 (3)2.3算法设计流程图 (4)3.详细设计 (5)3.1设计思想 (5)3.2设计关键算法 (5)4.调试分析 (7)4.1、测试及结果 (7)5.总结 (9)参考文献 (10)程序清单 (11)数据结构课程设计方案设计1.方案设计1.1问题描述一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编号坐在舞池的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴.请设计一系统模拟动态地显示出上述过程,要求如下:1) 输出每曲配对情况2) 计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况.至少求出K的两个值。

1.2需求分析核心问题:循环队列的应用数据模型(逻辑结构):循环队列(两个),将男生、女生两组人分别存放,以后实现循环配对输出。

校园十大优秀学子评比数据结构课程设计报告书

校园十大优秀学子评比数据结构课程设计报告书

校园十大优秀学子评比数据结构课程设计
报告书
1. 简介
本报告书是对校园十大优秀学子评比活动中,数据结构课程设计分数排名情况的统计和分析。

2. 数据来源
数据来源是参加校园十大优秀学子评比的同学们,在数据结构课程设计分数项中的得分情况。

本次评比活动涵盖了全校各专业优秀学子的评选。

3. 数据分析
经过数据处理和分析,我们得到了以下的数据结果:
4. 分析结果
通过以上数据可以看出:在数据结构课程设计中,张三、李四、王五分数最高,冯十二分数最低。

5. 改进建议
对于评选校园十大优秀学子的活动,我们建议可以在数据结构
课程设计中加入更多的考察内容,评估学生的课程能力。

同时,对
于数据处理和统计分析方面,可以再加强一下,提高数据的准确性
和客观性。

6. 总结
本报告书通过分析数据结构课程设计成绩,为校园十大优秀学
子评比活动提供了排名依据。

我们相信,在大家的共同努力下,这
个活动会越来越好!。

校园十大优秀青年评比数据结构课程设计报告书

校园十大优秀青年评比数据结构课程设计报告书

校园十大优秀青年评比数据结构课程设计报告书《数据结构课程设计报告书》题目:校园十大优秀青年评比专业: 计算机科学与技术班级: 姓名: 学号: 指导教师:开始日期: 2013.1.14 完成日期: 2013.1.161数据结构课程设计1.问题的描述和分析1.1问题描述新一届校园十大青年评比开始了~每一位在校学生可通过网上评比系统,为自己认为优秀的学生提名与投票。

请开发一个用于该需求的系统,满足下列基本功能:(1)提名优秀学生与投票。

(2)查看提名学生的基本信息。

(3)显示各提名学生的票数。

(4)显示排行榜。

一(基本要求:.(1)采用散列存储,存放提名学生的相关信息。

(2)设计哈希函数和冲突解决方法。

(3)提名学生至少包括以下信息:姓名、票数、个人基本信息(如:班级、专业、年级、突出事迹等)。

(4)设计输入提名学生信息的界面。

(5)完成基本功能。

(6)界面友好,操作简单。

(7)设计足够多的测试用例。

(8)查看指定学生的票数。

(9)按序显示各提名学生票数。

二(较高要求(1)限制每人的投票次数。

(2)按软件要求,扩充其他功能。

(3)实现数据的后效验,即不接收非法数据。

1.2 问题分析(1)用哈希表存储提名学生相关信息。

每位选手即学生的基本信息含有多个属性,为此可根据学生信息建立结构体,如下:struct student{char name[20];//姓名的拼音int studentnum;//学号int number;//票数int Class;//班级char major[30];//专业char grade[10];//年级char achievement[200];//突出事迹 };2 / 22数据结构课程设计(2)设计哈希函数,并用开放定址线性探测法处理冲突。

哈希函数根据姓名拼音的ascll码来设计,hash(key)=key%hashlength,其中k为姓名所有拼音的ascll码值的累加和,hashlength为表长。

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

1.问题的描述和分析1.1问题描述新一届校园十大青年评比开始了!每一位在校学生可通过网上评比系统,为自己认为优秀的学生提名与投票。

请开发一个用于该需求的系统,满足下列基本功能:(1)提名优秀学生与投票。

(2)查看提名学生的基本信息。

(3)显示各提名学生的票数。

(4)显示排行榜。

一.基本要求:.(1)采用散列存储,存放提名学生的相关信息。

(2)设计哈希函数和冲突解决方法。

(3)提名学生至少包括以下信息:姓名、票数、个人基本信息(如:班级、专业、年级、突出事迹等)。

(4)设计输入提名学生信息的界面。

(5)完成基本功能。

(6)界面友好,操作简单。

(7)设计足够多的测试用例。

(8)查看指定学生的票数。

(9)按序显示各提名学生票数。

二.较高要求(1)限制每人的投票次数。

(2)按软件要求,扩充其他功能。

(3)实现数据的后效验,即不接收非法数据。

1.2 问题分析(1)用哈希表存储提名学生相关信息。

每位选手即学生的基本信息含有多个属性,为此可根据学生信息建立结构体,如下:struct student{char name[20];//姓名的拼音int studentnum;//学号int number;//票数int Class;//班级char major[30];//专业char grade[10];//年级char achievement[200];//突出事迹};(2)设计哈希函数,并用开放定址线性探测法处理冲突。

哈希函数根据姓名拼音的ascll码来设计,hash(key)=key%hashlength,其中k为姓名所有拼音的ascll 码值的累加和,hashlength为表长。

因此需储存学生姓名的拼音。

(3)设计一个投票系统类:votesystemclass votesystem{private:student *st;int count;//当前元素个数int hashlength;//哈希表长public:votesystem() {st=NULL;count=0;hashlength=0;}~votesystem() {delete []st;count=0;}void HashTable(int n);//初始化哈希表int Hash(char *name);//哈希函数void collision(int &s){s=s++;}//开放定址线性探测法处理冲突int hashfind(char *name,int&k);//查找void inserthash(char*name);//插入int vote(char*name);//投票void display();//显示哈希表void showvote(int k); //按哈希表下标显示票数void showrank();//显示排行榜};(4)加入用户登录系统,所以同时构造用户user的结构体;结构体中需要有用户姓名和用户权限次数的数据。

struct user{char username[20];int root;user(){root=4;}};2.概要设计2.1系统模块划分图2-1 系统模块图2.2 ADT(抽象数据类型)描述1.为了满足程序功能的设计,定义了两个结构体;分别是学生选手student和登录用户user;2.定义了投票系统类class votesystem;3.详细设计3.1 ADT基本操作算法设计3.1.1struct student{char name[20];//姓名的拼音int studentnum;//学号int number;//票数int Class;//班级char major[30];//专业char grade[10];//年级char achievement[200];//突出事迹};struct user{char username[20];int root;user(){root=4;}};user store[20];3.1.2class votesystem{private:student *st;int count;//当前元素个数int hashlength;//哈希表长public:votesystem() {st=NULL;count=0;hashlength=0;}~votesystem() {delete []st;count=0;}void HashTable(int n);//初始化哈希表int Hash(char *name);//哈希函数void collision(int &s){s=s++;}//开放定址线性探测法处理冲突int hashfind(char *name,int&k);//查找void inserthash(char*name);//插入int vote(char*name);//投票void display();//显示哈希表void showvote(int k); //按哈希表下标显示票数void showrank();//显示排行榜};3.2 功能模块设计3.2.1 评比界面模块(1)界面设计(2)处理流程设计评比系统选择界面:由于选择结构比较单一,故在选择时没有选择使用switch 语句,使用简单的if语句;while(choice!=2){ system("cls");cout<<"***欢迎来到校园十大优秀青年评比系统***"<<endl;char username[20];cout<<"1.=============>投票<=============="<<endl<<"2.=============>退出<=============="<<endl;cin>>choice;if(choice==1){……}else cout<<"退出成功!";3.2.2 用户登录模块(1)界面设计(2)处理流程设计while(choose!=5)//不是选择5的情况下继续运行,否则退出{cout<<"****************************\n"<<" 校园十大优秀青年评比系统\n"<<"1、提名选手信息\n"<<"2、查询选手得票\n"<<"3、=======>投票\n"<<"4、前十排行榜单\n"<<"5、退出投票系统\n"<<"****************************\n"<<"感谢使用本系统!O(∩_∩)O"<<endl<<"请选择操作:";cin>>choose;if(choose==3)//每次投票后限制次数减一store[i].root--;switch(choose){char a[2];case 1:L.display();break;case 2:cout<<"请输入选手姓名的拼音(如:zhangjing ):"<<endl;cin.getline(a,2);cin.getline(name,20);int f;f=L.hashfind(name,k);if(f) L.showvote(k),cout<<endl;else cout<<"选手尚未提名!\n";break;case 3:if(store[i].root<=0)//当限制次数使用全部后,3操作不可继续操作{cout<<"【每人限投3票,您的投票次数已经用完】。

"<<endl;break;}elsecout<<"请输入选手姓名的拼音(如:zhangjing ):"<<endl;cin.getline(a,2);cin.getline(name,20);f=L.hashfind(name,k);if(f) {L.vote(name);cout<<"投票成功!剩余投票次数为:"<<(store[i].root-1)<<endl;}else{cout<<"无此记录!\n";cout<<" 1、提名该学生\n"<<" 2、返回系统界面\n"<<"请选择操作:";int t;cin>>t;if(t==1){L.inserthash(name);cout<<"选手提名成功\n";cout<<"剩余投票次数为:"<<(store[i].root-1)<<endl;}}break;case 4:L.showrank();break;case 5:cout<<"已登出,感谢您的使用!" <<endl;break;default:cout<<"操作无效,请重新选择!\n";break;}3.2.3选手信息模块(1)界面设计(2)处理流程设计此处利用了类votesystem中定义的函数display;显示哈希表保存的下标对应储存位置中的数据;void votesystem::display()//【显示哈希表】{for(int i=0;i<hashlength;i++)if(st[i].name[0]!='\0')cout<<st[i].studentnum<<' '<<st[i].name<<' '<<st[i].number<<"票"<<' '<<st[i].major<<st[i].grade<<st[i].Class<<"班"<<' '<<st[i].achievement<<'\t'<<endl;}3.2.4查询得票模块(1)界面设计(2)处理流程设计利用类中定义的函数showvote,表现出选手得票数;得票数储存在用哈希表下表表示位置的student类型的数组中;void votesystem::showvote(int k) //【按哈希表下标显示票数】{cout<<"现得票数:"<<st[k].number;}3.2.5 投票模块(1)界面设计(2)处理流程设计投票模块的功能是整个系统中最主要的,其中需要考虑的有进行姓名插入时调用的哈西函数,使其排序更合理;同时调用的collision。

相关文档
最新文档