《C数据结构课程设计实例.doc》由会员分享,可在线阅读,更多相关《C数据结构课程设计实例.doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、?C数据结构课程设计方案课题:N皇后的问题类型:C或C+周期:专业:计算机或非计算机状态修订人修改日期版本备注正式尚学堂2015/5/71.0目录1 引 言11.1课程设计课题11.2课程设计目的11.3 软硬件环境需求11.4课堂控制说明11.5 课程设计时间安排12. 课设流程22.1需求分析22.2栈代码实现32.3分隔符检查实现33. 总结延伸31 引 言本文档描述了如何使用实例教学方式让学生理解和掌握数据结构中栈的使用。从而可以让学生对所学知识有更具体的运用。本文档只是针对某一个具体知识点的讲解,并不涉及项目的开发流程以及更多细节,故只能用做为时较短的课程设计参考文档。1.1课程设计
2、课题N皇后问题描述:求出在一个nXn的棋盘上,放置n个不能互相捕捉的国际象棋“皇后”的所有布局。这是来源于国际象棋的一个问题。皇后可以沿着纵横和两条斜线4个方向相互捕捉。一个皇后放在棋盘的第四行第三列位置上,则棋盘上凡打“”的位置上的皇后就能与这个皇后相互捕捉。1.2课程设计目的通过数据结构课程设计教学,让学生熟悉数据结构在程序算法中的作用、了解数据结构对程序整体性能的影响;让学生掌握数据结构的应用技巧;并能运用经典的数据结构解决现实问题。最终达到提高分析问题、解决问题和实践应用能力。1.3 软硬件环境需求需求名称详细要求开发软件VS 或Eclipse for c 等IDE工具运行平台Wind
3、ows 1.4课堂控制说明因方案是一个理论可行的适合于具有掌握了一定知识前提条件的学生群体,当面对不同群体时,任课老师应该能够随时根据学生的接收能力及时调整教学方案,并能够随时对所要开发的项目课题进行动态的功能添加或删减。并能根据学生的反馈信息及时改变教学进程,或随时增加或削弱其难度1.5 课程设计时间安排本计划书课题的时间安排只是常规形态下的一个参考,具体的时间细节可在现实情况下做相应的调整。把知识点分成有内在联系的几个小知识点,以阶段援课方式层层推进,因果循环的方式加强学生的理解。时间知识点时间阶段目标阶段一课题需求讲解明确目标阶段二设计方案选择(一个需求总会有很多可实施方案) 拓展学生发
4、散思维,确定最终设计方案阶段三实例讲解明确学有所用。增加兴趣阶段四实例讲解磨刀不误砍柴工阶段五实例讲解代码编写阶段六实例讲解学以致用阶段七总结并延伸扩展教学阶段八验收2. 课设流程2.1案例分析需求已经在本文档前面提出,一个需求就是一个问题,对于任何问题的解决方案总是有很多。与现实处理问题的道理一样,人们总是试图找到一条快速且高效率的方案。在程序的世界里解决问题需要从时间度和空间度两个平面上考虑如何让程序运行更有效率。模块名称装箱问题模块编号Use Case01业务概述如问题描述事件流输出结题输入数据数据名称实际含义数据类型数据格式数据约束无处理数据1. 一个合适的解应是在每列、每行上只有一个
5、皇后,且一条斜线上也只有一个皇后。2. 求解过程从空配置开始。在第1列至第m列为合理配置的基础上,再配置第m+1列,直至第n列配置也是合理时,就找到一个解。接着改变第n列配置,希望获得下一个解。3. 另外在任一列上,可能有n种配置。开始时配置在第一行,以后改变时,顺次选择第2行,第3行直到第n行。当第n行配置也找不到一个合理的配置时,就要回溯,去改变前一列的配置。4. 在编写程序之前,先确定边式棋盘的数据结构。比较直观的方法是采用一个二维数组,但仔细观察就会发现,这种表示方法给调整候选解及检查其合理性带来困难。更好的方法乃是尽可能直接表示那些常用的 信息。对于本题来说,“常用信息”并不是皇后的
6、具体位置,而是“一个皇后是否已经在某行和某条斜线合理的安置好了”。因在某一列上恰好放一个皇后,引入一个一维数组(col),值coli表示在棋盘第i列,coli行又一个皇后。例如:col3=4,就表示在棋盘的第3列、第4行上有一个皇后。另外,为了使程序在找完了全部解后回溯刀最初位置,设定col0的初值为0 ,当回溯到第0列时,说明程序已求得全部解,结束程序运行。输出要素输出所有结果其它事件1. 给出数据结构和算法框架。数据结构应该完整描述出处理对象的逻辑关系,以及所选择的存储结构,算法可以用伪程序或流程图来描述其基本设计思想。2. 调试分析,根据程序调试过程中的几组测试数据,记录其运行结果,写出调试过程中出现的问题和解决方法、途径与结果,并分析其原因,总结体会。2.2代码实现代码功能使用贪婪法解决装箱问题文件名略(学生需填入课程调序报告中)源代码略(学生需填入课程调序报告中)3. 总结延伸在书写代码,其规范性和代码质量也需要有所讲究,此为习惯,需要平时鼓励和强调。此程序只是抛砖引玉,同学们可以触类旁通,举一反三。把栈应用到更多的具体问题中去。