数据结构课程设计格式参考

合集下载

数据结构课程设计格式

数据结构课程设计格式

数据结构课程设计 格式一、课程目标知识目标:1. 理解并掌握数据结构的基本概念,包括线性表、树、图等;2. 学会分析不同数据结构的特点和适用场景,能够选择合适的数据结构解决实际问题;3. 掌握常见数据结构的具体实现方法,如顺序表、链表、二叉树、图等;4. 了解算法的时间复杂度和空间复杂度分析,能够对数据结构进行性能评估。

技能目标:1. 能够运用所学数据结构知识,设计并实现简单的算法解决问题;2. 培养良好的编程习惯,提高编程能力,能够使用至少一种编程语言实现数据结构及相关算法;3. 学会使用数据结构解决实际问题,如排序、查找、最短路径等,提高问题解决能力。

情感态度价值观目标:1. 培养学生对数据结构和算法的兴趣,激发学习热情,形成自主学习的能力;2. 培养学生的团队协作意识,提高沟通与表达能力,学会在团队中分享和交流;3. 培养学生严谨、细致、勤奋的学习态度,增强面对困难的勇气和毅力;4. 培养学生的创新思维,鼓励尝试不同的解决方案,提高创新意识和创新能力。

课程性质:本课程为高年级学科专业课程,旨在帮助学生掌握数据结构的基本知识和技能,培养学生解决实际问题的能力。

学生特点:学生具备一定的编程基础,具有一定的逻辑思维能力和问题解决能力。

教学要求:结合实际案例,注重理论与实践相结合,强调学生的动手实践能力和创新思维。

在教学过程中,注重引导学生主动探索,培养学生自主学习能力。

同时,关注学生的情感态度价值观培养,提高学生的综合素质。

通过本课程的学习,使学生能够在实际项目中灵活运用数据结构知识,提高项目开发效率。

二、教学内容1. 线性表:介绍线性表的概念、性质和基本运算,包括顺序表和链表两种实现方式。

重点讲解链表的各种操作,如插入、删除、查找等。

教材章节:第一章2. 栈和队列:阐述栈和队列的基本概念、性质及应用场景,分析两种数据结构的操作特点。

教材章节:第二章3. 串:介绍串的定义、存储结构及基本操作,如模式匹配算法等。

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

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

数据结构课程设计报告模板课程设计说明书课程名称:数据结构专业:班级:姓名:学号:指导教师:成绩:完成日期:年月日任务书题目:黑白棋系统设计内容及要求:1.课程设计任务内容通过玩家与电脑双方的交替下棋,在一个8行8列的方格中,进行棋子的相互交替翻转。

反复循环下棋,最后让双方的棋子填满整个方格。

再根据循环遍历方格程序,判断玩家与电脑双方的棋子数。

进行大小判断,最红给出胜负的一方。

并根据y/n选项,判断是否要进行下一局的游戏。

2.课程设计要求实现黑白两色棋子的对峙开发环境:vc++6.0实现目标:(1)熟悉的运用c语言程序编写代码。

(2)能够理清整个程序的运行过程并绘画流程图(3)了解如何定义局部变量和整体变量;(4)学会上机调试程序,发现问题,并解决(5)学习使用C++程序来了解游戏原理。

(6)学习用文档书写程序说明目录1.引言 (1)2.课题分析 (4)3.具体设计过程 (5)3.1设计思路 (5)3.2程序设计流程图 (5)3.3.函数实现说明 (10)4.程序运行结果 (12)5.软件使用说明 (16)6.结论 (19)参考文献 (20)附录:源代码 (21)1.引言数据结构在计算机科学界至今没有标准的定义。

个人根据各自的理解的不同而有不同的表述方法:Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系。

这些联系可以通过定义相关的函数来给出。

”他将数据对象(data object)定义为“一个数据对象是实例或值的集合”。

Clifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是ADT(抽象数据类型Abstract Data Type)的物理实现。

”Lobert L.Kruse在《数据结构与程序设计》一书中,将一个数据结构的设计过程分成抽象层、数据结构层和实现层。

其中,抽象层是指抽象数据类型层,它讨论数据的逻辑结构及其运算,数据结构层和实现层讨论一个数据结构的表示和在计算机内的存储细节以及运算的实现。

数据结构课程设计报告撰写格式

数据结构课程设计报告撰写格式

数据结构课程设计
学院名称:
专业:
班级:
姓名:
年月日
《数据结构课程设计》报告要求(字体黑体,小三,居中)
一、第一类题目(宋体,四号,加粗)
1.问题陈述(宋体,小四,单倍行距)
2.程序代码
3.运行结果
4.设计体会与总结
二、第二类题目(宋体,四号,加粗)
1.问题陈述(宋体,小四,单倍行距)
2.需求分析
3.概要设计
4.详细设计
5.程序代码
6.运行结果与测试
7.设计体会与总结
三、第三类题目(宋体,四号,加粗)
1.问题陈述(宋体,小四,单倍行距)
2.需求分析
3.概要设计
4.详细设计
5.程序代码
6.运行结果与测试
7.设计体会与总结
要求:(1)标题为字体黑体,小三,居中
(2)小标题为宋体,四号,加粗
(3)正文要求为宋体,小四,单倍行距
(4)每个段落缩进2个汉字(4个空格)
(5)每个人报告书不得雷同,尤其第二类与第三类题目,发现雷同者一律按不及格论处。

(6)相关内容可以参考《数据结构课程设计》指导书,但不得抄袭相关内容。

优秀数据结构课程设计模板

优秀数据结构课程设计模板

优秀数据结构课程设计模板一、课程目标知识目标:1. 学生能理解数据结构的基本概念,掌握常用的数据结构类型及其特点。

2. 学生能描述线性表、栈、队列、树、图等数据结构的基本性质和应用场景。

3. 学生能运用所学知识分析实际问题的数据结构需求,并选择合适的数据结构进行解决。

技能目标:1. 学生具备使用编程语言实现各种数据结构的能力,并能熟练运用这些数据结构进行数据处理。

2. 学生能够运用算法分析技巧,评估不同数据结构在解决问题时的效率,优化程序性能。

3. 学生通过实际案例分析,培养解决复杂数据结构问题的能力,提高编程实践技能。

情感态度价值观目标:1. 学生能够认识到数据结构在计算机科学中的重要地位,增强对计算机科学的兴趣和热情。

2. 学生通过小组讨论和合作解决问题,培养团队协作能力和沟通能力。

3. 学生在学习过程中,养成积极思考、勇于探索的良好习惯,形成严谨、踏实的学术态度。

本课程针对高年级学生,课程性质为理论实践相结合。

在教学过程中,注重培养学生的动手能力、思维能力和创新能力。

课程目标旨在使学生在掌握基本数据结构知识的基础上,能够运用所学解决实际问题,提高编程技能,培养良好的团队协作和沟通能力,为后续学习打下坚实基础。

二、教学内容1. 数据结构基本概念:介绍数据结构的概念、作用和分类,引导学生理解数据结构在软件开发中的重要性。

教学内容:线性结构、非线性结构、逻辑结构与物理结构等。

2. 线性表:讲解线性表的定义、特点,以及线性表的顺序存储和链式存储实现。

教学内容:顺序表、链表、双向链表、循环链表等。

3. 栈与队列:介绍栈和队列的基本概念、操作及应用场景。

教学内容:栈的顺序存储和链式存储、队列的顺序存储和链式存储、栈与队列的应用等。

4. 树与二叉树:讲解树的基本概念、性质,重点介绍二叉树及其遍历算法。

教学内容:树的定义、二叉树的性质、二叉树的遍历、线索二叉树、二叉排序树等。

5. 图:介绍图的基本概念、存储结构,以及图的遍历算法。

数据结构课程设计(5篇)

数据结构课程设计(5篇)

数据结构课程设计(5篇)第一篇:数据结构课程设计课程设计说明书设计名称:数据结构课程设计题目:设计五:二叉树的相关操作学生姓名:专业:计算机科学与技术班级:学号:指导教师:日期: 2012 年 3 月 5 日课程设计任务书计算机科学与技术专业年级班一、设计题目设计五二叉树的相关操作二、主要内容建立二叉树,并对树进行相关操作。

三、具体要求1)利用完全二叉树的性质建立一棵二叉树。

(层数不小于4层)2)统计树叶子结点的个数。

3)求二叉树的深度。

4)能够输出用前序,中序,后序对二叉树进行遍历的遍历序列。

四、进度安排依照教学计划,课程设计时间为:2周。

本设计要求按照软件工程的基本过程完成设计。

建议将时间分为三个阶段:第一阶段,根据题目要求,确定系统的总体设计方案:即系统包括哪些功能模块,每个模块的实现算法,并画出相应的流程图.同时编写相应的设计文档;第二阶段,根据流程图编写程序代码并调试,再将调试通过的各个子模块进行集成调试;第三阶段,归纳文档资料,按要求填写在《课程设计说明书》上,并参加答辩。

三个阶段时间分配的大概比例是:35: 45: 20。

五、完成后应上交的材料本课程设计要求按照学校有关规范的要求完成,在课程设计完成后需要提交的成果和有关文档资料包括课程设计的说明书,课程设计有关源程序及可运行程序(含运行环境)。

其中课程设计说明书的格式按学校规范(见附件),其内容不能过于简单,必须包括的内容有:1、课程设计的基本思想,系统的总功能和各子模块的功能说明;2、课程设计有关算法的描述,并画出有关算法流程图;3、源程序中核心代码的说明。

4、本课程设计的个人总结,主要包括以下内容:(1)课程设计中遇到的主要问题和解决方法;(2)你的创新和得意之处;(3)设计中存在的不足及改进的设想;(4)本次课程设计的感想和心得体会。

5、源代码要求在关键的位置有注释,增加程序的可读性。

程序结构和变量等命名必须符合有关软件开发的技术规范(参见有关文献)。

数据结构课程设计模板(DOC)

数据结构课程设计模板(DOC)

数据结构与算法课程设计报告题目:学院:专业班级:学生姓名:指导教师:2016 年06 月2 9日目录一、课程设计目的 (3)二、课程设计步骤 (3)三、课程设计内容 (5)四、课程设计报告...................................................................... 错误!未定义书签。

五、提交材料 (6)六、考核方式与评分标准 (7)七、参考文献 (9)附录1 齐齐哈尔大学软件工程系课程设计说明书(报告)撰写规范 (10)一、课程设计目的及要求《数据结构与算法分析》课程设计培养计算机专业的学生的算法程序设计能力。

通过上机实验,可以培养学生程序设计的方法和技巧,提高学生编制清晰、合理、可读性好的系统程序的能力,加深对数据结构课程和算法的理解。

使学生更好地掌握数据结构的基本概念、基本原理、及基本算法,具有分析算法、设计算法、构造和开发较复杂算法的基本能力。

要求学生能综合运用《数据结构与算法分析》的相关知识,培养学生上机解决一些与实际应用结合紧密的、规模较大的问题的能力,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析实际问题的能力并提高C语言编程技巧,培养良好的编程风格。

课程设计要求独立完成,题目自选(参考题目见三,也可自拟),但需要老师确认(6月16日前定题),一人一题,要求程序有能采用交互式工作方式的界面进行功能的选择,只能用文件存储数据和处理数据不能使用数据库。

要求在教学周的第18周前完成。

二、课程设计步骤随着计算机性能的提高,它所面临的软件开发的复杂度也日趋增加。

然而,编制一个10000行的程序的难度绝不仅仅是一个5000行的程序的两倍,因此软件开发需要系统的方法。

一种常用的软件开发方法,是将软件开发过程分为分析、设计、实现和维护四个阶段。

虽然数据结构课程中的课程设计的复杂度远不如(从实际问题中提出来的)一个“真正的”软件,但为了培养一个软件工作者所应具备的科学工作的方法和作风,完成课程设计的应有如下的5个步骤:1.问题分析和任务定义通常,课程设计题目的陈述比较简洁,或者说是有模棱两可的含义。

数据结构教案设计模板范文

数据结构教案设计模板范文

一、教学目标1. 知识目标:(1)了解数据结构的基本概念和分类。

(2)掌握基本数据结构(如线性表、栈、队列、树、图)的定义、性质和基本操作。

(3)理解数据结构在实际问题中的应用。

2. 能力目标:(1)培养学生运用数据结构解决问题的能力。

(2)提高学生的逻辑思维能力和编程能力。

3. 情感目标:(1)激发学生对数据结构的兴趣,培养其自主学习能力。

(2)培养学生的团队合作精神。

二、教学内容1. 数据结构的基本概念和分类2. 线性表3. 栈和队列4. 树5. 图6. 数据结构在实际问题中的应用三、教学过程(一)导入1. 结合生活实例,引导学生思考数据结构在生活中的应用。

2. 介绍数据结构的基本概念和分类。

(二)新课讲解1. 线性表:(1)介绍线性表的定义、性质和基本操作。

(2)通过实例讲解线性表在实际问题中的应用。

2. 栈和队列:(1)介绍栈和队列的定义、性质和基本操作。

(2)通过实例讲解栈和队列在实际问题中的应用。

3. 树:(1)介绍树的定义、性质和基本操作。

(2)通过实例讲解树在实际问题中的应用。

4. 图:(1)介绍图的定义、性质和基本操作。

(2)通过实例讲解图在实际问题中的应用。

(三)课堂练习1. 完成课后习题,巩固所学知识。

2. 编写程序,实现基本数据结构的相关操作。

(四)课堂总结1. 回顾本节课所学内容,总结数据结构的基本概念、性质和操作。

2. 分析数据结构在实际问题中的应用,引导学生思考如何运用数据结构解决实际问题。

四、教学评价1. 课后作业完成情况。

2. 课堂练习及编程能力。

3. 学生对数据结构的兴趣和自主学习能力。

五、教学反思1. 教学过程中,关注学生的兴趣和需求,调整教学内容和方法。

2. 鼓励学生积极参与课堂讨论,提高课堂氛围。

3. 关注学生的学习进度,及时解决学生在学习过程中遇到的问题。

六、教学资源1. 教材、课件、课后习题等。

2. 在线资源,如教学视频、编程平台等。

七、教学时间1. 课时:2课时2. 教学内容分配:- 数据结构的基本概念和分类:0.5课时- 线性表:1课时- 栈和队列:0.5课时- 树:1课时- 图:1课时- 数据结构在实际问题中的应用:0.5课时。

数据结构课程设计说明书模板

数据结构课程设计说明书模板

目录1.设计目的与任务 (2)2.需求分析 (2)3.设计 (2)3.1设计思想 (2)3.2设计表示 (3)4.用户手册 (5)5.测试数据及测试结果 (5)6.课程设计总结 (6)程序清单 (6)1.设计目的与任务2.需求分析模拟某校九层教学楼的电梯系统。

该楼有一个自动电梯,能在每层停留。

九个楼层由下至上依次称为地下层、第一层、第二层、……第八层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来到该层候命。

乘客可随机地进出于任何层。

对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。

模拟时钟从0开始,时间单位为0.1秒。

人和电梯的各种动作均要消耗一定的时间单位(简记为t),比如:有人进出时,电梯每隔40t测试一次,若无人进出,则关门;关门和开门各需要20t;每个人进出电梯均需要25t;如果电梯在某层静止时间超过300t,则驶回1层侯命。

而题目的最终要求输出时:按时序显示系统状态的变化过程,即发生的全部人和电梯的动作序列。

3.设计3.1设计思想(1)数据结构设计本题中的电梯的变化,是一个动态变化的过程,要在动态过程中实现正常跳转,首先要确定各种跳转的状态,因而这里我使用枚举类型来表示电梯的各种状态的:enum {up,down,stop,home}State(home);同时初始化最初状态为电梯在本垒层。

而在电梯的运行过程中对于乘客来说,显然有一个进入电梯与出电梯的队列,因而在这里我是用的链表来实现这个过程的,同时用结构体来保存该乘客的信息:typedef struct passage{int now;//乘客当前所在的位置int dis;//乘客的目地地int wait;//最长的等待的时间int waitnow;//已经等待的时间struct passage *next;}Passage;虽然电梯中的状态是由枚举类型来实现的,但是在整个程序的运行过程中,我还是为电梯设置了一个结构体类型,以便保存更多的信息:typedef struct lift{int count_C;//计数电梯已到达的层数int count_A;//系统的总时间计数器记得必须初始化为0int flag_in[High];//九个楼层有无请求的标志哪个楼层如果有请求该标志置1int num;//等待队列中的人数记得要进行初始化为0int people;//电梯中人数int flag_out[High];}Lift;(2)算法设计顾名思义本程序在运行的过程中用到的算法便是—“电梯算法”,电梯算法借鉴了磁盘寻道C-LOOK算法,即电梯向一个方向运行,直到这个方向上没有服务为止。

《数据结构》课程设计报告范本(doc 8页)

《数据结构》课程设计报告范本(doc 8页)

《数据结构》课程设计报告范本(doc 8页)《数据结构》课程设计报告一、课程设计的内容、要求1 线性表的另一种实现。

对顺序表空间被耗尽问题的一个解决办法是:当数组溢出时,用一个更大的数组替换该数组。

一个较好的法则是:当出现溢出时,数组长度加长一倍具有较高的时间和空间效率。

参照教材中顺序表的有关内容,按上面的要求实现顺序表,并测试当数组溢出时你的实现的运作情况。

二、所采用的数据结构ADT List{数据对象: D = {a i|a i ∈ElemSet, i=1,2…n>=0}数据关系: R1={<a i-1, a i>|a i-1, a i∈D, i=1,2,…,n}基本操作:void IniList(SqList& L);void DestroyList(SqList& L);bool ListEmpty(SqList L);int ListLength(SqList L);void GetElem(SqList L, int i, Elem &e);bool PriorElem(SqList L, Elem cur_e, Elem &pre_e);bool NextElem(SqList L, Elem cur_e, Elem &next_e);void ListInsert(SqList &L, int i, Elem e);void ListDelete(SqList &L, int i);void ClearList(SqList& L);}三、主要模块(或函数)及其功能typedef struct LIST{ElemType *data;int size;int max_size;}LIST;void InitList(LIST *list)//初始化{list->data = (int*)malloc(sizeof(ElemType)*INIT_SIZE);list->size = 0;list->max_size = INIT_SIZE;}void DestroyList(LIST &list){}bool NextElem(LIST list,int cur_e,int &next_e)//后继{if(cur_e < 0 || cur_e > list.size) return false;else{next_e = cur_e + 1;return true;}}void Insert(LIST *list,ElemType value){if(list->size>=list->max_size){int i;ElemType *temp = (int*)malloc(sizeof(ElemType)*list->size*2);cout<<endl<<"线性表原容量改变:原大小为"<<list->max_size;for(i=0;i<list->size;i++){temp[i] = list->data[i];}free(list->data);list->data = temp;list->max_size*=2;cout<<"改变后大小"<<list->max_size<<endl;}list->data[list->size] = value;list->size++;}void Insert_Back(LIST *list,int idx,ElemType value){if(list->size>=list->max_size){int i;ElemType *temp = (int*)malloc(sizeof(ElemType)*list->size*2);cout<<endl<<"线性表原容量改变:原大小为"<<list->max_size;for(i=0;i<list->size;i++){temp[i] = list->data[i];}free(list->data);list->data = temp;list->max_size*=2;cout<<"改变后大小"<<list->max_size<<endl;}if(idx>list->size){list->data[list->size] = value;}else{int i;for(i=list->size;i>idx;i--){list->data[i] = list->data[i-1];}list->data[idx] = value;}list->size++;}void ListDelete(LIST *list,int i,ElemType *e)//删除一个元素{int j;*e=list->data[i];for(j=i+1;j<=list->size-1;j++)list->data[j-1]=list->data[j];list->size--;}void Print_list(LIST *list){int i;if(list->size == 0){cout<<"当前线性表内没有元素。

数据结构课程设计报告格式

数据结构课程设计报告格式

《数据结构》课程设计报告题目猴子选大王学生姓名学号专业班级指导老师设计日期 2009年12月19日指导老师评阅意见:一、问题定义1、课程设计目的:数据结构课程设计是学习数据结构课程的一个重要环节。

能巩固和加深课堂教学内容,提高学生实际工作能力,培养科学作风,为学习后续课程和今后的系统开发奠定基础。

通过课程设计,使学生熟练掌握数据结构课程中所学的理论知识,并实际应用,通过综合运用数据结构的基本知识来解决实际问题,加强学生分析和解决问题的能力。

2、课程设计的要求:本次课程设计要求学生正确理解课题,考虑问题要细致,全面,解决问题的方法要科学合理,切合实际。

并能上机实现。

3、课程设计的意义:1、有利于基础知识的理解。

学生对计算机运行的机理等知识内容的理解比较肤浅。

如果接触了程度设计,就能真正理解,从而进一步打破计算机的神秘感。

2、有利于逻辑思维的锻炼。

程序设计是公认的、最能直接有效地训练学生的创新思维,培养分析问题、解决问题能力的学科之一。

即使一个简单的程序,从任务分析、确定算法、界面布局、编写代码到调试运行,整个过程学生都需要有条理地构思,这中间有猜测设想、判断推理的抽象思维训练,也有分析问题、解决问题、预测目标等能力的培养。

3、有利于治学态度的培养。

程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。

因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。

这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼猴子选大王任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。

数据结构课设【范本模板】

数据结构课设【范本模板】

学号1507030222数据结构课程设计设计说明书Gorilla管理信息系统+Gorilla图结构数据应用起止日期:2017年01月09 日至2017年01 月13日学生姓名XXX班级15网络2班成绩指导教师(签字)计算机与信息工程学院2017年01月09日天津城建大学课程设计任务书2016-2017学年第1 学期计算机与信息工程学院网络工程专业网络2 班级课程设计名称:数据结构课程设计设计题目:Gorilla管理信息系统+Gorilla图结构数据应用完成期限:自2017 年01月09日至2017 年01月13 日共 1 周设计依据、要求及主要内容(可另加附页):一、建立一个小型的管理信息系统:1、确认管理信息系统的主题:(一)主题词汇表:1。

hippopotamus 河马2.jackal 豺3.kingfisher 翠鸟4。

leopard豹5.lion 狮6。

actor 演员7。

astronaut 太空员8.policeman 警察9。

firefighter 消防员10。

mugger 强盗11.farmer 农民12. boss 老板13。

dancer 跳舞者14。

Ostrich 鸵鸟15. pilot 飞行员16.hairdresser 理发师17。

Mule 骡18.waiter 服务员19.accountant 会计20。

monk--和尚21.dog—狗22. priest——牧师23。

director-—导演24。

model—- 模特儿25。

singer——歌手26。

dentist--牙医27. elephant-—象28.nurse-—护士29.navigator——航海家30.pilot-- 飞行员31。

architect建筑师32. peacock孔雀33.baker面包师34.businessman商人35。

penguin 企鹅36。

receptionist接待员37.secretary—-秘书38。

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

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

山东理工大学计算机学院课程设计(数据结构)班级姓名学号指导教师二○一一年一月二十日课程设计任务书及成绩评定课题名称Ⅰ、题目的目的和要求:1、设计目的巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。

(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。

(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。

2、设计题目要求:(给出你所选择的题目的要求描述)Ⅱ、设计进度及完成情况日期内容1.10-1.11 选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。

1.12~1.14 创建相关数据结构,录入源程序。

1.17~1.19 调试程序并记录调试中的问题,初步完成课程设计报告。

1.20~1.21 上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师3-4个问题。

考核结束后将课程设计报告和源程序的电子版交班长统一刻光盘上交。

Ⅲ、主要参考文献及资料[1] 严蔚敏数据结构(C语言版)清华大学出版社 1999[2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999[3] 谭浩强 C语言程序设计清华大学出版社[4] 与所用编程环境相配套的C语言或C++相关的资料Ⅳ、成绩评定:设计成绩:(教师填写)指导老师:(签字)二○一一年一月二十一日目录第一章概述 (1)第二章系统分析 (2)第三章概要设计………………………………………………………第四章详细设计………………………………………………………第五章运行与测试……………………………………………………第六章总结与心得……………………………………………………参考文献………………………………………………………………第一章概述(以图书管理系统设计为例)课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数据结构课程设计报告撰写模板(参考)

数据结构课程设计报告撰写模板(参考)

数据结构课程设计报告撰写模板(参考)目录1需求分析 (3)1.1 输入的形式和输入值的范围....................................1.2 输出的形式................................................1.3 程序所能达到的功能........................................1.4 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果..............................................................2概要设计 (4)3详细设计 (5)3.1 姓名(结构体数组)初始化………………………………………………………………………………3.2 建立哈希表……………………………………………………………………………………………………….3.2.1 用除留余数法构建哈希函数………………………………………………………………………………..3.2.2 用伪随机探测再散列法处理冲突……………………………………………………………………….4调试分析 (11)5用户使用说明 (12)6测试结果 (13)7参考文献 (14)1需求分析以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?并明确规定:1.1 输入的形式和输入值的范围;1.2 输出的形式;1.3 程序所能达到的功能;1.4 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。

2概要设计(系统概要、基本功能要求)说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。

存储结构设计typedef struct{ char *py; //名字的拼音int k; //拼音所对应的整数}NAME;typedef struct //哈希表{ char *py; //名字的拼音int k; //拼音所对应的整数int si; //查找长度}HASH;3详细设计(列出函数首部+注释)例如:void show(listlink head) /*显示所有的信息*/实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);可采用流程图 N – S 图或PAD图进行描述,画出函数和过程的调用关系图。

《数据结构课程设计报告》的书写规范及示例

《数据结构课程设计报告》的书写规范及示例

《数据结构课程设计报告》的书写规范对于每一个应用程序所解决的问题,都应有规范说明的文档。

书写合格的文档和编程调试同等重要,是合格软件必不可少的文献。

本课程设计采用的规范说明格式如下:题目:一、问题描述1、题目内容2、基本要求3、测试数据二、需求分析1、(程序所能达到的基本功能)2、(输入的形式和输入值的范围)3、(输出的形式)4、(测试数据要求)三、概要设计1、(所需的ADT,它们的作用)2、(主程序流程及模块调用关系)3、(核心的粗线条伪码算法)四、详细设计1、(实现概要设计的数据类型,重点语句加注释)2、(每个操作的伪码算法,重点语句加注释)3、(主程序和其他模块的伪码算法,重点语句加注释)4、(函数调用关系图)五、调试分析1、(设计与调试过程中遇到的问题及分析、体会)2、(主要和典型算法的时空复杂度的分析)六、使用说明(简要说明程序运行操作步骤)七、测试结果(包括输入输出,输入集应多于需求分析的数据)八、附录(带注释的源程序)其中,问题描述旨在建立问题提出的背景环境,指明问题的求解的要求。

需求分析以无歧义的方式陈述说明程序设计的任务和功能。

概要设计说明程序中用到的所有抽象数据类型的定义、主程序流程和模块之间的层次关系。

详细设计实现概要设计中定义所有数据类型,对每个操作和核心模块写出伪码算法,画出函数的调用关系图。

调试分析主要记载调试过程、经验体会,并进行算法的时空分析。

使用说明讲述操作步骤和运行环境。

测试结果应包括运行的各种数据集和所有的输入输出情况。

附录主要指源程序代码和下达任务的其他原始文件。

数据结构课程设计报告示例数据结构课程设计报告题目:编制完成集合的交、并、差运算的程序专业年级:姓名:学号:12345 指导老师:杨先凤、游书涛完成日期:2012年1月6日成绩:一、问题描述1、题目内容:利用有序链表表示正整数集合,实现集合的交、并和差运算。

2、基本要求:由用户输入两组整数分别作为两个集合的元素,由程序计算它们的交、并、差集,并将运算结果输出。

数据结构课程设计报告要求及样本(最终版)范文

数据结构课程设计报告要求及样本(最终版)范文

数据结构课程设计格式要求1.课程设计形式结构封面前部分目录课程设计形式结构主要部分附录部分参考文献2.排版与装订2.1 页面大小:全部采用A4纸。

2.2 行距:全部采用1.5倍行距(图表除外)。

2.3 页码:每页下端居中,全部采用阿拉伯数字排序,如1,2,3等。

2.4目录两字用黑体4号字居中,字与字之间空4个字距。

目录中的中文全部用宋体小4号字。

2.5 页眉:全部不加页眉。

2.6 页面设置:页边距上下左右各用2.4cm。

2.7封面:统一封面。

2.8 装订:一律左侧装订。

3.正文3.1一级标题一律用黑体4号字,左顶格,标题与段落之间不留空行。

正文其他部分全部用宋体小4号字,英文采用Times New Roman。

3.2图应有图题,放图下方居中,用阿拉伯数字编号,图题用黑体5号字,居中。

如:图1,图号后不加任何符号,空1个中文字距后写图题。

4.参考文献“参考文献”四字用黑体4号字居中,字与字之间空一个中文字距。

其后内容用宋体5号字。

具体格式可参考教务处发布的本科毕业论文格式要求(2008届开始启用)仲恺农业工程学院课程设计报告课程名称:数据结构院(系):计算机科学与工程学院专业班级:学号:姓名:指导老师:2承诺书郑重声明:本人所呈交的课程设计是本人在导师指导下独立撰写并完成的,课程设计没有剽窃、抄袭、造假等违反学术道德、学术规范和侵权行为。

本课程设计不包含任何其他个人或集体已经发表或撰写过的研究成果,如果引用则标识出了出处。

对本课程设计的研究做出贡献的个人和集体,均已在文中以明确方式标明。

课程设计与资料若有不实之处,本人承担一切相关责任。

特此声明。

签名:年月日目录1.线性表........................................... 错误!未定义书签。

2.栈和队列......................................... 错误!未定义书签。

3.树和二叉树....................................... 错误!未定义书签。

数据结构教案设计方案模板

数据结构教案设计方案模板

一、教学目标1. 知识与技能:(1)了解数据结构的基本概念、特点及作用。

(2)掌握常见的数据结构,如线性表、栈、队列、树、图等。

(3)能够根据实际问题选择合适的数据结构。

2. 过程与方法:(1)通过实例分析,培养学生对数据结构的理解和应用能力。

(2)通过分组讨论、实践操作,提高学生的团队合作意识和解决问题的能力。

3. 情感态度与价值观:(1)激发学生对数据结构的兴趣,培养学生严谨、求实的科学态度。

(2)培养学生具有创新精神和实践能力。

二、教学重难点1. 教学重点:(1)线性表、栈、队列、树、图等数据结构的基本概念和特点。

(2)数据结构的操作和应用。

2. 教学难点:(1)数据结构的抽象思维和逻辑推理能力。

(2)数据结构的实际应用。

三、教学过程1. 导入新课(1)通过生活中的实例,引出数据结构的概念。

(2)讲解数据结构的作用和意义。

2. 线性表(1)介绍线性表的定义、特点及基本操作。

(2)通过实例讲解线性表的插入、删除、查找等操作。

(3)分组讨论,让学生动手实践,巩固所学知识。

3. 栈与队列(1)介绍栈和队列的定义、特点及基本操作。

(2)通过实例讲解栈和队列的入栈、出栈、入队、出队等操作。

(3)分组讨论,让学生动手实践,巩固所学知识。

4. 树与图(1)介绍树和图的定义、特点及基本操作。

(2)通过实例讲解树和图的遍历、查找等操作。

(3)分组讨论,让学生动手实践,巩固所学知识。

5. 总结与拓展(1)总结本节课所学内容,强调数据结构在实际应用中的重要性。

(2)布置课后作业,巩固所学知识。

(3)鼓励学生思考数据结构在实际生活中的应用,提高学生的创新能力和实践能力。

四、教学评价1. 课堂表现:观察学生在课堂上的参与度、提问、回答问题等情况。

2. 课后作业:检查学生课后作业的完成情况,了解学生对知识点的掌握程度。

3. 实践操作:通过实验、项目等方式,评估学生在实际应用中运用数据结构的能力。

五、教学反思1. 教学方法是否合理,是否激发了学生的学习兴趣。

数据结构课程设计报告格式2

数据结构课程设计报告格式2

课程设计报告格式:
1、设计目的
2、总体设计(程序设计组成框图、流程图)
3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)
4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施
5、源程序清单和执行结果:清单中应有足够的注释
检查要求:
1、每个人必须有可运行的程序(做完检查);
2、每个人必须交《数据结构课程设计报告》(手写稿)
打分标准:
1、根据平时上机考勤;注重平时上机成绩,不定期检查学生进度,学生不得以自己有私人电脑为借口而不来上机。

2、根据程序运行结果,学生能对自己的程序面对教师提问并能熟练地解释清楚。

3、根据《数据结构课程设计报告》,以上三项缺一不可,否则不能到得相应学分。

1. 目的:
(1)要求熟练掌握C语言的基本知识和编程技能;
(2)掌握数据结构设计的基本思路和方法;
2. 要求
基本要求:
(1)设计最短路径,包含以下方面:
1、用邻接矩阵存储一张带权有向图。

2、对图进行从某一源点到其他各顶点的最短路径
3、输出最后结果(路径名称、路径长度)。

三、信息描述
邻接矩阵建立包括:用二维数组存储信息。

没有直达路径的为无穷。

用循环来判断最小值。

最终结果用一维数组存储。

输出一维数组,显示最终结果。

数据结构课程设计说明书格式

数据结构课程设计说明书格式

中北大学数据结构课程设计说明书2011年12月20日1.设计任务概述1、数据输入输出:原始数据要求输入二叉树的7个结点:1234567,输出的是一个二叉树,这就实现了二叉树的建立过程。

然后对二叉树进行线索化。

对其进行插入:在7结点处插入结点8;删除:删除结点8;恢复线索等功能。

进行二叉树的初始化,依次输入,以#结束:1234567#****************************1、进行二叉树线索化2、进行插入操作3、删除4、中序输出5、线索输出0、退出请选择:1已经实现二叉树的线索化,可选择5查看线索2、设计算法测试用例:(1)输入结点:1234567;(2)对输入的二叉树进行线索化;(3)查看二叉树的中序线索输出:4->2->5->1->6->3->7;(4)在7结点处插入结点8,此时完成线索化恢复,查看二叉树的中序线索输出:4->2->5->1->6->3->8->7;(5)删除结点8,此时完成线索化恢复,发现结点8,ltag=1,rtag=1,查看二叉树的中序线索输出:4->2->5->1->6->3->7;(6)继续删除结点r,发现无该结点,则输入错误。

2.本设计所采用的数据结构所采用的数据结构有队列和二叉树3.功能模块详细设计3.1 详细设计思想建立二叉树(即指在内存中建立二叉树的存储结构),建立一个二叉链表,需按某种顺序一次输入二叉树中的结点,且输入顺序必须隐含结点间的逻辑结构信息。

对于一般的二叉树,需添加虚结点,使其成为完全二叉树。

关键在于如何将新结点作为左孩子和右孩子连接到它的父结点上。

可以设置一个队列,该队列是一个指针类型的数组,保存已输入的结点地址。

操作:(1)令队头指针front指向其孩子结点当前输入的建立链接的父结点,队尾指针rear指向当前输入的结点,初始:front=1,rear=0;(2)若rear为偶数,则该结点为父结点的左孩子;若rear为奇数,则该结点的右孩子;若父结点和孩子结点为虚结点,则无需链接。

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

郑州师范学院软件工程专业数据结构课程设计报告设计题目:班级:组长:姓名(学号)组员:姓名(学号)…指导教师:完成日期:成绩:目录1需求分析 (1)1.1功能分析 (1)1.2设计平台 (1)2概要设计 (2)2.1类LinkList (4)2.2类Joseph (4)2.3类异常处理 (4)3详细设计和实现 (4)3.1创建结点Node (5)3.2创建双向循环链表 (6)3.3从链表中删除结点 (7)4调试与操作说明 (11)4.1调试情况 (11)4.2操作说明 (11)5设计总结 (12)参考文献 (13)附录 (13)1需求分析1.1功能分析本次选做的课程设计是改进约瑟夫(Joseph)环问题。

约瑟夫环问题是一个古老的数学问题,本次课题要求用程序语言的方式解决数学问题。

此问题仅使用单循环链表就可以解决此问题。

而改进的约瑟夫问题通过运用双向循环链表,同样也能方便地解决。

在建立双向循环链表时,因为约瑟夫环的大小由输入决定。

为方便操作,我们将每个结点的数据域的值定为生成结点时的顺序号和每个人持有的密码。

进行操作时,用一个指针current指向当前的结点,指针front始终指向头结点。

然后建立双向循环链表,因为每个人的密码是通过rand()函数随机生成的,所以指定第一个人的顺序号,找到结点,不断地从链表中删除链结点,直到链表剩下最后一个结点,通过一系列的循环就可以解决改进约瑟夫环问题。

1、本演示程序中,利用单向循环链表存储结构模拟约瑟夫问题的进行。

程序运行后,首先要求用户指定初始报数上限值,然后读取个人的密码。

可设n ≤30。

此题所用的循环链表中不需要“头结点”,因此在程序设计中应注意空表和非空表的界限。

2、演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令:相应的输入数据和运算结果显示在其后。

3、程序执行的命令包括:1)构造约瑟夫环;2)执行约瑟夫环,并输出出列人的序号以及相应的密码;3)结束。

4、测试数据1)m的初始值为20;2)n=7,7个人的密码依次为:3、1、7、2、4、8、4。

3)首先m值为6,正确的出列顺序应为6、1、4、7、2、3、5。

1.2设计平台Windows2000以上操作系统;Microsoft Visual C++ 6.02概要设计已知n个人(以编号1,2,3...n分别表示)围成一圈。

从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到一圈的人全部出列。

这个就是约瑟夫环问题的实际场景,有一种是要通过输入n,m,k三个正整数,来求出列的序列。

这个问题采用的是典型的循环链表的数据结构,就是将一个链表的尾元素指针指向队首元素。

p->link=head。

解决问题的核心步骤:首先建立一个具有n个链结点,无头结点的循环链表。

然后确定第1个报数人的位置。

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

改进的约瑟夫环问题与原问题思路一致,只是不再采用单循环链表存储结构,而采用双向循环链表,而且用一个判断语句来决定报数的方向的顺时针还是逆时针。

本课程设计主要采用了类的数据结构,程序中包含了两个类:Linklist, Joseph。

为实现上述程序功能,应以单向循环链表表示约瑟夫环。

为此,需要两个抽象数据类型:单向循环链表和约瑟夫环。

1)、单向循环链表的抽象数据类型定义为:ADT List{数据对象:D={ai|ai∈Elemset,i=1,2,…,n,n≥0}数据关系:R1={<a(i-1),ai>|a(i-1),ai∈D,i=2,…n}基本操作:InitList(&L)操作结果:构造一个空的链表L。

DestroyList(&L)初始条件:线性表L已存在。

操作结果:销毁线性表L。

ListLength(L)初始条件:线性表L已存在。

操作结果:返回L中数据元素个数。

GetElem(L,i,&e)初始条件:线性表L已存在,1≤i≤ListLength(L)。

操作结果:用e返回L中第i个数据元素的值。

ListInsert(&L,I,e)初始条件:线性表L已存在,1≤i≤ListLength(L)+1。

操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1。

ListDelete(&L,i,&e)初始条件:线性表L已存在且非空,1≤i≤ListLength(L)。

操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1。

ListTraverse(L,visit())初始条件:线性表L已存在。

操作结果:依次对L的每个数据元素调用函数visit()。

一旦visit()失败,则操作失败。

}ADT List2)约瑟夫环的抽象数据类型定义为:ADT Set{数据对象:D={ai|ai为用户输入的数字密码,i=1,2,…,n,1≤n≤7}数据关系:{}基本操作:CreatSet(&L,s)初始条件:L为单向循环链表。

操作结果:对链表中的数据域进行赋值。

DeleteSet(&L,i,&e)初始条件:线性表L已存在且非空,1≤i≤ListLength(L)。

操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1。

PrintSet(L)初始条件:链表L已存在。

操作结果:按输出次序显示每个人的密码。

}ADT Set3)本程序包含四个模块:1、主程序模块:V oid main(){初始化;Do{接受命令;处理命令;} while (“命令”=”退出”);}2、约瑟夫环单元模块——实现约瑟夫环的抽象数据类型;3、单向循环链表单元模块——实现单向循环链表的抽象数据类型;4、结点结构单元模块——定义单向循环链表的结点结构。

各模块之间的调用关系如下:结点结构单元模块↓单向循环链表单元模块↓约瑟夫环单元模块↓主程序模块2.1类LinkList主要功能是创建结点,每个结点数值域包括data,password,还有指示前驱结点的指针llink,和指示后继结点的指针rlink。

2.2类Joseph主要功能是实现创建双向循环链表及一些相应的操作。

2.3类异常处理在C++程序中,可以使用try-throw-catch结构处理程序异常。

采用这一程序结构能够将使用和实现分离:类和函数的实现者使用throw语句易地错误类别通知使用者。

使用者根据获悉的错误类别采取相应的措施,这就是异常处理。

3详细设计和实现改进约瑟夫环问题的基本思路和原问题基本一致,只是一个采用单循环链表,另一个采用双向循环链表来解决问题。

第一步是定义结构变量结点linklist,并在该结点下定义结点的元素域:data,password,指针域:lLink和rLink。

然后建立一个由n个链结点,无表头结点的双向循环链表。

并由构造函数对结点赋值,由随机函数rand()产生每个结点的password。

由于每个结点的password是由随机函数产生的,也就是每个结点的password是后知的,所以在一开始人为地指定一个结点的顺序,由此结点开始报数。

报password个数后,报到的那个结点被删除,它的password被记录下,由它的下一个结点开始逆方向报数………如此循环,直到循环链表里只剩下一个结点,那就是问题所求的结果。

具体到问题上,还需要创建一个Joseph类,由构造函数来初始化,输入所有的人数,也就是表长,然后指定由第几个人开始报数。

在Joseph类中定义一个GetWinner()函数,由它来实现获得最后的胜利者。

并在该类中设置一个判断语句来确定先由顺时针报数并淘汰了一个人之后,再按逆时针顺序报数,如此交替进行。

主要功能实现的程序流程图及核心代码。

算法流程图:点。

所以,对于所有人围成的圆圈所对应的数据结构采用一个不带头结点的循环链表来描述。

设头指针为front,front始终指向头结点,并定义指针current记录当前的结点。

并根据具体情况移动(顺逆时针)。

为了记录退出的人的先后顺序,采用一个顺序表进行存储。

程序结束后再输出依次退出的人的编号顺序。

由于只记录各个结点的data值就可以。

最后通过函数调用来输出顺序。

要解决约瑟夫环问题,首先一点就是必须有一个环,所以第一步我们必须建立一个双向循环链表。

而建立一个双向循环链表必须有一个空的双向循环链表,然后运用尾插法建立一个双向循环链表,这样约瑟夫环就创建出来了,接下来就是处理约瑟夫环问题。

3.3从链表中删除结点在双向循环链表中,一个结点的前驱结点地址保存在该结点的lLink域中,这样可以方便地实现在一个指定结点之前插入一个新结点的操作,也可以方便地删除某个指定结点。

函数通过代码:q->llink->rlink=q->rlink;q->rlink->llink=q->llink;delete q;来删除当前的那个结点q,通过循环来一次次删除当前的结点,直到链表中剩下最后一个结点。

具体程序如下:#include<stdio.h>#include<malloc.h>#include<stdlib.h>typedef struct node //定义单循环链表中节点的结构{int num;//序列号即个人的编号int cipher;//个人所持有的密码struct node *next;}linklist;class YSFH{public:linklist *Creat(int n);linklist *Select1(int m);linklist *head;//头指针指示有n个结点的单循环链表creat protected:linklist *Select(linklist *head,int m);private:linklist *p;//存放人员信息linklist *r;//临时存放linklist *q;int k;};/*建立单循环链表函数*/linklist *YSFH::Creat(int n){linklist *head;linklist *p;p=(linklist *)malloc(sizeof(linklist));head=p;p->num=1;printf("随机产生第1个人的密码: ");p->cipher=rand()%10;{ if(p->cipher==0)p->cipher=rand()%10;}printf("%d\n",p->cipher);r=p;p->next=p;for(int k=2;k<=n;k++){p=(linklist *)malloc(sizeof(linklist));p->num=k;//给每人一个编号printf("随机产生第%d个人的密码: ",k);p->cipher=rand()%10;{ if(p->cipher==0)p->cipher=rand()%10;}printf("%d\n",p->cipher);r->next=p;r=p;}p->next=head;return(head);}/*决定出列编号*/linklist *YSFH::Select1(int m){return Select(head,m);}linklist *YSFH::Select(linklist *head,int m){q=head;k=1;p=q->next;//q为p的前驱指针,p指向当前报数的人printf("出列的序号依次为:");//在head中的第一个结点起循环记数找第m个结点while(q!=p){k=k+1;//报一次数if(k%m==0)//所报数等于报数上限值时{printf("%d ",p->num);//输出该结点的num值m=p->cipher;//把该结点的cipher(密码)值赋给mq->next=p->next;//对应的节点从链表中删除free(p);k=0;p=q->next;}else{q=p;p=p->next;//p指向当前报数的人}}head=p;return(head);}void main(){int n,m;m!=0;YSFH Y;printf("输入总人数n: ");scanf("%d",&n);Y.head=Y.Creat(n);printf("随机产生第一次的报数上限值m: ");m=rand()%10;{if(m==0)m=rand()%10;}printf("%d\n",m);Y.head=Y.Select1(m);printf("%d\n",Y.head->num);}4调试与操作说明4.1调试情况这次的课程设计的代码很冗长,所以等有了解题思路后,把代码都写上后难免会有很多错误。

相关文档
最新文档