《数据结构与算法》
课程设计报告。
姓名: 林小琼。
学号。班级: 09网络工程。
设计时间: 2011.1.10—2011.1.14
审阅教师: 林仙丽。
目录。一.课程设计的目的与要求(含设计指标2
二.方案实现与调试2
2.1仓库管理系统2
2.2通讯录管理系统5
2.3猴子选大王7
2.4.二叉树运算(最近祖先7
2.5各种排序8
三.课程设计分析与总结9
四.源程序清单9
一。 课程设计的目的与要求(含设计指标)
设计目的:1、培养学生运用算法与数据结构的基本知识解决实际编程中的数据结构设计和算法设计问题;2、培养学生独立设计程序与解决问题的能力,培养学生团队协作集成程序模块及调试能力;3、培养学生初步的软件设计及软件测试的能力。
设计任务及要求。
基本要求:1、学生必须仔细阅读《数据结构》课程设计指导书,认真主动完成课设的要求。有问题及时主动通过各种方式与教师联系沟通;
2、学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时的向教师汇报;
3、课程设计按照教学要求需要一周时间完成,一周中每天(按每周5天)至少要上3-4小时的机来调试c语言设计的程序,总共至少要上机调试程序15小时;
4、根据设计报告要求编写设计报告,主要内容包括目的、意义、原理和实现方法简介、过程分析及说明、实验结果情况说明、结论;
5、每个人必须有可运行的程序,学生能对自己的程序面对教师提问并能熟练地解释清楚,学生回答的问题和程序运行的结果作为评分的主要衡量标准。
二。 方案实现与调试。
2.1仓库管理系统。
题目内容描述:设计一个仓库管理系统,可以按照顺序和货物名称查询仓库的存储情况,也可以增加或删除货物。
struct node
int no商品编号。
char name[max]; 商品名称。
int count商品数量。
2.1.1算法描述及实验步骤。
主要模块的算法描述。
1)直接生成一个链表,增加则在后面直接插入一个结点(2)定义该链表的头指针,一个个指下去,直到它等于要查询的结点,打印并推出。(3)删除流程图。
主界面选项要求输入数字,错误输入有提示且要求重新输入。货物信息输入时,编号为整型,名称为10个字符,数量为整型。同时输入货物信息时,编号输入n作为结束符。
2.1.2调试过程及实验结果。
1)存入仓库货物信息。
2)打印出仓库货物信息并插入、增加货物信息,分别存入要增加商品编号、商品名称、数量。
3)增加后并一起打印出来,列表如下。接下来实现查询功能,你可以根据商品编号查询,也可以跟据商品名称查询,若仓库里没有该商品信息,则输出查找失败。若存在,则输出其他对应的商品信息。
4)删除功能。输入要删除的商品编号,则该商品在仓库里的记录取消;删除后打印出剩余商品的信息。最后按相应提示结束系统操作。
2.2通讯录管理系统。
题目描述:通讯录一般包括通讯者的编号、姓名、性别、**及地址等信息,设计一个通讯录要求实现通讯者的插入、查询、删除、更新、排序操作struct node
char num[5编号。
char name[8姓名。
char sex性别。
char tel[8**。
char address[100]; 地址。
2.2.1算法描述及实验步骤。
主要模块的算法描述。
1)插入、查询、删除功能与上题仓库管理系统一样。
2)排序功能。我采用冒泡排序法,分为降序、升序两方式。其中最主要是交换两结点,这步较繁琐。
下面为交换流程图。p1为p的前指针,q1为q的前指针,比较p、q大小,当符合条件,交换p、q结点,并重新交换p、q指针。
2.2.2调试过程及实验结果。
该通讯录管理系统与仓库管理系统类似,新添加了一个排序功能。
(1)存入通讯录信息,生成一个链表。
2)打印并输出通讯录信息,列表如下。之后实现插入功能,在其链表后面插入一个新结点,生成一个新链表。分别输入通讯者的编号、姓名、性别、**、
地。3)插入后并一起打印出来,列表如下。接下来实现查询功能,你可以根据通讯者的编号查询,也可以跟据姓名查询,若通讯录里没有该通讯者信息,则输出查找失败若存在,则输出其他对应的通讯者的信息。
4)实现删除功能,输入通讯者的编号,则删除该编号对应的其他信息。删除该编号对应的其他信息。删除后打印剩余通讯者的信息,最后退出系统。
5)排序功能。排序分为降序、升序两种方式。由于根据编号排序,通过比较编号的大小依次排序。
2.3猴子选大王。
题目内容描述。
任务:一堆猴子都有编号,编号是1,2,3 ..m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。
要求:输入数据:输入m,n m,n 为整数,n2.3.1算法描述及实验步骤。
主要模块的算法描述。
主要函数void select(linklist head,int m,int n)
运用单循环链表来实现,尾结点指向头结点,定义一个中间变量i来实现,当i=n时,删除该结点,i重新申请为0,指针继续指下去,直到删除到只剩一个结点,也就是说,该指针的下一个指针还是指向本身。
2.3.2调试过程及实验结果。
删除报数为n的结点,直到只剩一个结点,则该结点为最终结果,猴子大王。
2.4.二叉树运算(最近祖先)
题目内容描述:任务:求二叉树中指定两个结点共同的最近祖先。
2.4.1算法描述及实验步骤。
主要模块的算法描述:先生成一个二叉排序树,用链表指针来存储。之后运用递归算法求叶子结点,另外申请一个指向二叉树的结构指针来存储叶子结点,生成一个单链表,最后打印出链表。
链接是用叶子结点的右孩子域存放指针。 void createbitree创建二叉树 search ancestors 查找最近祖先。
算法的改进方法:上树存储为整型,可以改进定义为其他类型,建立二叉树。
2.4.2调试过程及实验结果。
创建树。查找。
2.5各种排序。
题目内容描述:任务:用程序实现插入法排序、起泡法改进算法排序;利用插入排序和冒泡法的改进算法,将用户随机输入的一列数按递增的顺序排好。
输入的数据形式为任何一个正整数,大小不限。输出的形式:数字大小逐个递增的数列。
2.5.1算法描述及实验步骤。
主要模块的算法描述:直接插入排序的基本思想是:当插入第i (i≥ 1) 个对象时,前面的v[0], v[1], v[i-1]已经排好序。
这时,用v[i]的关键码与v[i-1], v[i-2], 的关键码顺序进行比较,找到插入位置即将v[i] 插入,原来位置上的对象向后顺移。
起泡排序的基本思想是:需反复比较相邻两个数的比较与交换这两种基本操作。对相邻的两个数进行比较时,如果反面的数大于(或小于)前面的数,将这两个数进行交换,大的数(小的数)往前冒。
2.5.2调试过程及实验结果。
直接插入法冒泡排序法:
三.课程设计分析与总结。
本次课程设计的运行结果在不断的修改中得到完善!使我对数据结构有了更深的理解,既培养了我运用算法与数据结构的能力,又培养了我对于团队协作集成程序模块及调试能力。平时学的东西终于在这课程设计充分体现出来!
这次又学到了很多!
四。 源程序清单。
一:仓库管理。
#include<>
#include<>
#include<>
typedef struct node
int no;
char name[20];
int count;
struct node *next;
storage,*goods;
void showlist1()
printfstorage informationn");
printf("numbers name quantity");
printf("001naicha 100");
printf("002huoguo 200");
数据结构课程设计实验报告
数据结构。课程设计报告。xx大学计算机xxxx学院。计算机系 08级软件工程专业xx班。xxx学号 0823xxxxxx 班内序号 xx 2010年11月15日。任务 参加运动会有n个学校,学校编号为1 n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1 m,女子m 1 m w。不同的项目取...
数据结构课程设计实验报告
仲恺农业工程学院。课程设计报告。2010 2011年度第1学期 名称 数据结构 课程设计 题目 学生成绩管理系统 院系 计算科学学院 班级 信息与计算科学信计091,092 学号 200911314116 200911314214 学生姓名 许建城刘汉明 指导教师 吴东庆。设计周数1作者1 许建城贡...
数据结构课程设计实验报告
江苏大学计算机学院。软件工程课程设计报告书。课程名称数据结构课程设计总评成绩。学生姓名 学号卢江涛3100608047 学生专业班级软件工程软件1002班。指导教师姓名王新胜。一 问题描述。以邻接表的方式确定有向网,完成 1.建立并显示它的邻接链表 2.以非递归的方式进行深度优先遍历,显示遍历的结果...