ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:46.27KB ,
资源ID:11575235      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11575235.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验任务书1.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验任务书1.docx

1、实验任务书1目 录0 实验要求 2实验1 线性表的顺序存储结构 3实验2 链表的应用 6实验3 栈的应用 9实验4 队列的应用 10实验5 树的应用 11实验6 图的应用 12实验7 图的应用 13实验8 查找与排序 140 实验要求一、实验步骤 问题分析充分地分析和理解问题本身,弄清要求做什么,包括功能要求、性能要求、设计要求和约束以及基本数据特性,数据元素之间的关系等。 数据结构设计针对要求解决的问题,考虑各种可能的数据结构,并且力求从中找出最佳方案(必须连同算法一起考虑),确定主要的数据结构及全局变量。对引入的每种数据结构和全局变量要详细说明其功能、初值和操作特点。 算法设计算法设计分概

2、要设计和详细设计。概要设计着重解决程序的模块设计问题,这包括考虑如何把被开发的问题程序自顶向下分解成若干顺序模块,并决定模块的接口,即模块间的相互关系以及模块之间的信息交换问题。详细设计则要决定每个模块内部的具体算法,包括输入、处理和输出,采用类C语言描述。 测试用例设计准备典型测试数据和测试方案,测试数据要有代表性、敏感性,测试方案包括模块测试和模块集成测试。 上机调试对程序进行编译,纠正程序中可能出现的语法错误。测试前,先运行一遍程序看看究竟将会发生什么,如果错误较多,则根据事先设计的测试方案并结合现场情况进行错误跟踪,包括打印执行路径或输出中间变量值等手段。二、实验报告每次实验结束后,均

3、应撰写实验报告。实验报告应包括如下内容: 1、问题描述:简述题目要解决的问题是什么。2、设计:概要设计采用抽象数据类型描述,详细设计包括存储结构的定义、主要操作算法设计等。用类C语言或用框图描述。3、调试报告:调试过程中遇到的问题是如何解决的;对设计和编码的讨论和分析。4、运行结果。可以贴相应的运行结果截图。5、算法分析与改进:算法的时间复杂度和空间复杂度分析;算法改进的设想。6、经验和体会所有实验做完后,上交上机实验源程序和相应的运行结果截图。源程序要加注释。如果题目规定了测试数据,则截图结果要包含这些测试数据和运行输出,当然还可以含有其它测试数据和运行输出(有时需要多组数据)。三、实验学时

4、16学时实验1 线性表的顺序存储结构实验目的1 熟悉C语言的上机环境,掌握使用VC环境上机调试线性表的基本方法;2 掌握线性表的顺序存储结构及其线性表的基本操作:插入、删除、查找等。3 掌握线性表合并等运算在顺序存储结构上的实现。实验要求1 认真阅读和掌握本实验的程序。2 上机运行程序,观察程序的运行结果。3 按照你对线性表的操作需要,重新改写主程序并运行。实验内容(基础题必做,应用题、提高题可选)1. 基础题:线性表基本操作的实现这个程序中演示了顺序表的创建、插入、删除和查找,(1)请修改并记录运行结果;(2)按照你自己对线性表测试的需要,增加新的操作,重新改写主程序并记录运行结果。#inc

5、lude #include /顺序表的定义#define ListSize 100typedef int ElemType;typedef struct ElemType *elem; /*存放表元素的空间基地址*/ int length; /*当前的表长度*/ int listsize; /*能容纳的最大元素个数*/SeqList;void CreateList(SeqList &L,int n);void PrintList(SeqList L,int n);int LocateList(SeqList L,int x);void InsertList(SeqList &L,int x,i

6、nt i);void DeleteList(SeqList &L,int i);void main() SeqList L; int i,x; int n=10; /*THE LENGTH OF LIST*/ L.length=0; clrscr(); CreateList(L,n); /*CREATE THE LIST*/ PrintList(L,n); /*PRINT THE LIST*/ printf(INPUT THE SEARCH ELEMENT); scanf(%d,&x);i=LocateList(L,x); printf(the search position is %dn,i

7、); /*顺序表查找*/ printf(input the position of insert:n); scanf(%d,&i); printf(input the value of insertn); scanf(%d,&x); InsertList(L,x,i); /*顺序表插入*/ PrintList(L,n); /*打印顺序表*/ printf(input the position of deleten); scanf(%d,&i); DeleteList(L,i); /*顺序表删除*/ PrintList(L,n); getch();/*打印顺序表*/*顺序表的建立:*/void

8、CreateList(SeqList &L,int n)L. elem =(ElemType *)malloc(ListSize *sizeof(ElemType);if(!L.elem) exit(0);L.listsize= ListSize;int i;printf(please input n numbersn);for(i=1;i=n;i+)scanf(%d,&L. elem i);L.length=n;/*顺序表的打印:*/void PrintList(SeqList L,int n)int i;printf(the sqlist isn);for(i=1;i=n;i+)print

9、f(%d ,L.elem i);/*顺序表的查找:*/int LocateList(SeqList L,int x)int i;for(i=1;ilength;j=i;j-)L- elem j+1=L- elem j;L- elem i=x;L.length+;/*顺序表的删除:*/void DeleteList(SeqList &L,int i) int j;for(j=i;j=(L.length)-1;j+)L. elem j=L. elem j+1;2.应用题(1)求集合A、B的并集C。(2)归并两个有序表La和Lb成一个新的有序表Lc。有序指值非递减。3.提高题(1)学生成绩管理本题目

10、是对学生成绩管理的简单模拟,用菜单选择方式完成下列功能:输入学生数据;输出学生数据;学生数据查询;添加学生数据;修改学生数据;删除学生数据。本题目的数据是一组学生的成绩信息,每条学生的成绩信息由学号、姓名和成绩组成。(2)考试报名管理本项目是对考试报名管理的简单模拟,用菜单选择方式完成下列功能:输入考生信息;输出考生信息;查询考生信息;添加考生信息;修改考生信息;删除考生信息。本题目的数据是一组考生信息,每条考生信息由准考证号、姓名、性别、年龄、报考类别等信息组成。实验2 链表的应用实验目的1 定义单链表的结点类型。2 熟悉对单链表的一些基本操作和具体的函数定义。3 通过单链表的定义掌握线性表

11、的链式存储结构的特点。4 熟悉单链表的应用场合。实验要求1 独立完成;2 准备好测试数据,程序调试正确,有执行结果。实验内容(基础题必做,应用题、提高题任选)1基础题:按照教材中抽象数据类型线性表的定义,演示单链表的基本操作,按照自己的意图编写基本操作函数和主函数进行测试。示例:这个程序演示了单链表的创建和插入操作。程序如下:#include #includetypedef int ElemType;typedef struct node ElemType data; struct node *next; NODE;typedef NODE *LinkList;/*/LinkList Crea

12、te() NODE *p,*head; int x; head=(NODE *)malloc(sizeof(NODE); head-next=NULL; printf(Input data,-1 to End!n); scanf(%d,&x); while(x!=-1) p=(NODE *)malloc(sizeof(NODE); p-data=x; p-next=head-next; head-next=p; scanf(%d,&x); return(head);/*/void Output(LinkList head) NODE *p; p=head; printf(Begin to du

13、mp the LinkList.n); while(p-next!=NULL) printf(-%d,p-next-data); p=p-next; printf(nThe LinkList ended!n);/*/int Listlen(LinkList head) int i=0; NODE *p=head; while(p-next!=NULL) i+; p=p-next; return(i);/*/void Ins(LinkList head,int i,int e)NODE *p=head,*q;int j=0;while(p-next&jnext;if(!p-next&ji-1)

14、printf(Wrong positionn );else q=(NODE *)malloc(sizeof(NODE); q-data=e; q-next=p-next; p-next=q;/*/main() LinkList head; int length; int i,element; clrscr(); head=Create(); Output(head); length=Listlen(head); printf(the length of the link is %dn,length); printf(Input the insert position and element:n

15、); scanf(%d%d,&i,&element); Ins(head,i,element); Output(head); getch();2.应用题(1)求集合A、B的并集C。(2)归并两个有序表La和Lb成一个新的有序表Lc。有序指值非递减。3.提高题(1)约瑟夫生者死者游戏: 30个旅客同乘一条船,因为严重超载,加上风高浪大,危险万分;因此船长告诉乘客,只有将全船一半的旅客投入海中,其余人才能幸免遇难。无奈,大家只得同意这种办法,并议定30个人围成一圈,由第一个人开始,依次报数,数到第9人,便把他投入大海中,然后从他的下一个人数起,数到第9人,再将他投入大海,如此循环,直到剩下15个乘

16、客为止。问哪些位置是将被扔下大海的位置。本游戏的数学建模如下:假设n个旅客排成一个环形,依次顺序编号1,2,n。从某个指定的第1号开始,沿环计数,每数到第m个人就让其出列,且从下一个人开始重新计数,继续进行下去。这个过程一直进行到剩下k个旅客为止。本游戏要求用户输入的内容包括: 1) 旅客的个数,也就是n的值; 2) 离开旅客的间隔数,也就是m的值;3) 所有旅客的序号作为一组数据要求存放在某种数据结构中。本游戏要求输出的内容包括1) 离开旅客的序号; 2) 剩余旅客的序号。(2)一元多项式求和有两个指数递减的一元多项式,写一程序求这两个多项式的和。提示:用带表头结点的单链表作为多项式的存储表

17、示;要建立两个单链表;多项式相加就是要把一个单链表中的结点插入到另一个单链表中去,要注意插入、删除操作中指针的正确修改。实验3 栈的应用实验目的1 会定义顺序栈和链栈的类型。2 掌握栈的插入和删除在操作上的特点。3 熟悉对栈的一些基本操作和具体的函数定义。实验要求1 独立完成;2 程序调试正确,有执行结果。实验内容(基础题必做,应用题、提高题任选)1. 基础题:按照教材中抽象数据类型栈的定义,采用顺序存储结构(用动态数组)或链式存储结构,编写主函数演示顺序栈/链栈的基本操作。2. 应用题:(1)判断给定的字符串是否中心对称。(2)数制转换(3)表达式括号匹配问题3. 提高题(1)算符优先算法为

18、表达式求值(2)迷宫求解实验4 队列的应用实验目的1 掌握队列的存储结构及基本操作。2 掌握循环队列的设置及循环队列的各种基本操作的实现。3 通过具体的应用实例,进一步熟悉和掌握队列的实际应用。实验要求1 独立完成;2 程序调试正确,有执行结果。实验内容(基础题必做,应用题任选)1、 基础题:按照教材中抽象数据类型队列的定义,采用顺序存储结构(循环队列)或链式存储结构,编写主函数演示循环队列/链队列的基本操作。2、 应用题:舞伴问题:假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队,跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴,若两队初始人数不相同,则较长的那一队中未配对者等待

19、下一轮舞曲。设计一个函数partner(),模拟上述舞伴配对问题。基本要求:1) 由键盘输入数据,每对数据包括姓名和性别;2) 输出结果包括配成舞伴的女士和男士的姓名,以及未配对者的队伍名称和队头者的姓名; 实验5 树的应用实验目的1 熟悉二叉树结点的结构和对二叉树的基本操作。2 掌握对二叉树每一种操作的具体实现。3 学会利用递归方法编写对二叉树这种递归数据结构进行处理的算法。4 在二叉树基本操作的基础上掌握对二叉树的一些其它操作的具体实现方法。5 掌握构造哈夫曼树以及哈夫曼编码的方法。实验要求1 独立完成;2 程序调试正确,有执行结果。实验内容(基础题必做,应用题任选)1. 基础题:按照教材

20、中抽象数据类型二叉树的定义,采用二叉链表存储结构,编写主函数演示二叉树的基本操作(不少于5个),如:(1) Status InitBTree( BiTree &BT ) /初始化二叉树BT (2) Status CreateBTree(BiTree &BT, char *a ) /根据先序序列a建立二叉链表存储结构 (3)Status EmptyBTree(BiTree BT) /检查二叉树BT是否为空,空返回Yes,否则返回No (4) int DepthBTree(BiTree BT) /求二叉树BT的深度并返回该值 (5) Status FindBTree(BiTree BT, TEle

21、mType x) /查找二叉树BT中值为x的结点,若查找成功返回该结点地址,否则返回Error (6) void PreOrder(BiTree BT) /先序遍历二叉树BT(7) void InOrder(BiTree BT) /中序遍历二叉树BT(8) void PostOrder(BiTree BT) /后序遍历二叉树BT(9) void LevelOrder(BiTree BT ) /按层次遍历二叉树BT (10) void PrintBTree(BiTree BT ) /输出二叉树BT 2应用题家谱管理:本题目对家谱管理进行简单的模拟,以实现查看祖先和子孙个人信息、插入家族成员、删除

22、家族成员等功能。实验6 图的应用实验目的1 掌握图的各种存储结构,特别要熟练掌握邻接矩阵和邻接表存储结构。2 遍历是图各种应用的算法的基础,要熟练掌握图的深度优先遍历和广度优先遍历算法,复习栈和队列的应用。实验要求1 独立完成;2 程序调试正确,有执行结果。实验内容1、基础题(至少做一个)(1)图的邻接矩阵定义及实现:定义图的邻接矩阵存储结构,并编写图的初始化、建立图、深度优先/广度优先输出图、输出图的每个顶点的度等基本操作实现函数。以下图为例,建立一个验证操作实现的主函数进行测试。(2)图的邻接表的定义及实现:定义图的邻接表存储结构,并编写图的初始化、建立图、深度优先/广度优先输出图、输出图

23、的每个顶点的度等基本操作实现函数。同时在主函数中调用这些函数进行验证(以下图为例)。实验7 图的应用实验目的1. 掌握图的最短路径概念。2. 掌握生成最小生成树的Prim算法(用邻接矩阵表示图)/克鲁斯卡尔算法。3. 理解求最短路径的DijKstra算法(用邻接矩阵表示图)。实验要求1 独立完成;2 程序调试正确,有执行结果。实验内容(基础题必做,应用题任选)1、基础题编写用邻接矩阵表示有向带权图时图的基本操作的实现函数,主要包括:1 初始化邻接矩阵表示的有向带权图 2 建立邻接矩阵表示的有向带权图 (即通过输入图的每条边建立图的邻接矩阵)3 出邻接矩阵表示的有向带权图(即输出图的每条边)。4

24、 编写求最短路径的DijKstra算法函数 void Dijkstra( adjmatrix GA, int dist, edgenode *path, int i, int n) ,该算法求从顶点i到其余顶点的最短路径与最短路径长度,并分别存于数组 path 和 dist 中。(可选)5 编写打印输出从源点到每个顶点的最短路径及长度的函数 void PrintPath(int dist, edgenode *path, int n)。(可选)同时建立一个验证操作实现的主函数进行测试。2、应用题编写Prim算法函数 void Prim(adjmatrix G, edgset CT, int n

25、)或者克鲁斯卡尔算法函数以及输出边集数组的函数 void PrintEdge(edgeset CT, int n)。编写主函数测试生成最小生成树并输出(即输出边集)。 测试数据如下:实验8 查找与排序实验目的1 熟悉并掌握各种查找算法2 掌握排序的基本概念。3 熟悉各种内部排序的方法。实验要求1 独立完成;2 程序调试正确,有执行结果。实验内容(基础题必做,应用题任选)1.基础题实现教材中的查找和排序算法(各不少于2种)。编写主函数以菜单形式测试各个查找和排序算法。2.应用题编写程序,完成以下任务:a) 通过键盘输入n个学生的考试成绩表(设计为一个线性表),表中每个元素由学号、姓名与分数组成;b) 按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次;c) 按学号查找某个学生成绩信息;d) 按名次打印出每个学生的姓名与分数。要求:利用基础题中实现的排序和查找算法,在主函数中首先输入数据,然后调用查找函数查找某个给定的学号的学生成绩,然后调用排序函数排序,并按分数高低次序打印名次与成绩表。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1