《数据结构》实验指导书(C语言版)
数据结构实验-实验指导书
实验一线性表操作一、实验目的1熟悉并掌握线性表的逻辑结构、物理结构。
2熟悉并掌握顺序表的存储结构、基本操作和具体的函数定义。
3熟悉VC++程序的基本结构,掌握程序中的用户头文件、实现文件和主文件之间的相互关系及各自的作用。
4熟悉VC++操作环境的使用以及多文件的输入、编辑、调试和运行的全过程。
二、实验要求1实验之前认真准备,编写好源程序。
2实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。
3不断积累程序的调试方法。
三、实验内容基本题:1对元素类型为整型的顺序存储的线性表进行插入、删除和查找操作。
加强、提高题:2、编写一个求解Josephus问题的函数。
用整数序列1, 2, 3, ……, n表示顺序围坐在圆桌周围的人。
然后使用n = 9, s = 1, m = 5,以及n = 9, s = 1, m = 0,或者n = 9, s = 1, m = 10作为输入数据,检查你的程序的正确性和健壮性。
最后分析所完成算法的时间复杂度。
定义JosephusCircle类,其中含完成初始化、报数出圈成员函数、输出显示等方法。
(可以选做其中之一)加强题:(1)采用数组作为求解过程中使用的数据结构。
提高题:(2)采用循环链表作为求解过程中使用的数据结构。
运行时允许指定任意n、s、m数值,直至输入n = 0退出程序。
实验二栈、队列、递归应用一、实验目的1熟悉栈、队列这种特殊线性结构的特性2熟练掌握栈、队列在顺序存储结构和链表存储结构下的基本操作。
二、实验要求1实验之前认真准备,编写好源程序。
2实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。
3不断积累程序的调试方法。
三、实验内容基本题(必做):1分别就栈的顺序存储结构和链式存储结构实现栈的各种基本操作。
2、假设以带头结点的循环链表表示队列,并且只设一个指针指向对尾结点,不设头指针,试设计相应的置队空、入队和出队的程序。
加强题:3设线性表A中有n个字符,试设计程序判断字符串是否中心对称,例如xyzyx和xyzzyx都是中心对称的字符串。
数据结构实验指导书
数据结构实验指导书实验1:顺序表基本操作一、实验目的1.学会定义线性表的顺序存储类型,实现C程序的基本结构,对线性表的一些基本操作和具体的函数定义。
2.掌握顺序表的基本操作,实现顺序表的插入、删除、查找以及求并集等运算。
3.掌握对多函数程序的输入、编辑、调试和运行过程。
二、实验要求1.预习C语言中结构体的定义与基本操作方法。
2.对顺序表的每个基本操作用单独的函数实现。
3.编写完整程序完成下面的实验内容并上机运行。
4.整理并上交实验报告。
三、实验内容:1.编写程序实现顺序表的下列基本操作:(1)初始化顺序表La。
(2)将La置为空表。
(3)销毁La。
(4)在La中插入一个新的元素。
(5)删除La中的某一元素。
(6)在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0。
(7)打印输出La中的元素值。
2.编写程序完成下面的操作:(1)构造两个顺序线性表La和Lb,其元素都按值非递减顺序排列。
(2)实现归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减顺序排列。
(3)假设两个顺序线性表La和Lb分别表示两个集合A和B,利用union_Sq操作实现A=A∪B。
四、思考与提高假设两个顺序线性表La和Lb分别表示两个集合A和B,如何实现A=A ∩B ?一、实验目的1.学会定义单链表的结点类型,实现对单链表的一些基本操作和具体的函数定义,了解并掌握单链表的类定义以及成员函数的定义与调用。
2.掌握单链表基本操作及两个有序表归并、单链表逆置等操作的实现。
二、实验要求1.预习C语言中结构体的定义与基本操作方法。
2.对单链表的每个基本操作用单独的函数实现。
3.编写完整程序完成下面的实验内容并上机运行。
4.整理并上交实验报告。
三、实验内容1.编写程序完成单链表的下列基本操作:(1)初始化单链表La。
(2)在La中插入一个新结点。
(3)删除La中的某一个结点。
(4)在La中查找某结点并返回其位置。
数据结构实验指导书(C版)
数据结构实验指导书(C语言版)2017年9月目录1、顺序表的实现 (1)2、链栈的实现 (3)3、前序遍历二叉树 (5)4、图的深度优先遍历算法 (7)5、散列查找 (9)1、顺序表的实现1. 实验目的⑴掌握线性表的顺序存储结构;⑵验证顺序表及其基本操作的实现;⑶理解算法与程序的关系,能够将顺序表算法转换为对应的程序。
2. 实验内容⑴建立含有若干个元素的顺序表;⑵对已建立的顺序表实现插入、删除、查找等基本操作。
3. 实现提示定义顺序表的数据类型——顺序表结构体SeqList,在SeqList基础上实现题目要求的插入、删除、查找等基本操作,为便于查看操作结果,设计一个输出函数依次输出顺序表的元素。
简单起见,本实验假定线性表的数据元素为int型,要求学生:(1)将实验程序调试通过后,用模板类改写;(2)加入求线性表的长度等基本操作;(3)重新给定测试数据,验证抛出异常机制。
4. 实验程序在编程环境下新建一个工程“顺序表验证实验”,并新建相应文件,文件包括顺序表结构体SeqList的定义,范例程序如下:#define MaxSize 100 /*假设顺序表最多存放100个元素*/typedef int DataType; /*定义线性表的数据类型,假设为int型*/typedef struct{DataType data[MaxSize]; /*存放数据元素的数组*/int length; /*线性表的长度*/} SeqList;文件包括建立顺序表、遍历顺序表、按值查找、插入操作、删除操作成员函数的定义,范例程序如下:int CreatList(SeqList *L, DataType a[ ], int n){if (n > MaxSize) {printf("顺序表的空间不够,无法建立顺序表\n"); return 0;} for (int i = 0; i < n; i++)L->data[i] = a[i];L->length = n;return 1;}void PrintList(SeqList *L){for (int i = 0; i < L->length; i++)printf("%d ", L->data[i]); /*输出线性表的元素值,假设为int型*/ }int Locate(SeqList *L, DataType x){for (int i = 0; i < L->length; i++)if (L->data[i] == x) return i+1; /*返回序号*/return 0; /*退出循环,说明查找失败*/ }int Insert(SeqList *L, int i, DataType x){if (L->length >= MaxSize) {printf("上溢错误,插入失败\n"); return 0;} if (i < 1 || i > L->length + 1) {printf("位置错误,插入失败\n"); return 0;} for (int j = L->length; j >= i; j--) /*j表示元素序号*/L->data[j] = L->data[j - 1];L->data[i - 1] = x;L->length++;return 1;}int Delete(SeqList *L, int i, DataType *ptr){if (L->length == 0) {printf("下溢错误,删除失败\n"); return 0;} if (i < 1 || i > L->length) {printf("位置错误,删除失败\n"); return 0;} *ptr = L->data[i - 1]; /*取出位置i的元素*/for (int j = i; j < L->length; j++) /* j表示元素所在数组下标*/L->data[j - 1] = L->data[j];L->length--;return 1;}在定义了顺序表的存储结构SeqList并实现了基本操作后,程序中就可以使用SeqList 类型来定义变量,可以调用实现基本操作的函数来完成相应的功能。
数据结构C版实验指导
《数据结构与算法》实验指导书一、实验课程教学目的和要求《数据结构与算法》是一门实践性很强的课程,光靠读书和做习题是不能提高实践能力的。
《数据结构与算法》的实验与程序设计语言课程中的实验不同,后者更多的强调语言方面的功能实现,而前者更接近实际,需要同学们自己分析问题,设计模型和算法,再上机调试完成。
《数据结构与算法》的实验的目的主要有两个:1)深化理解书本上的理论知识,将书本的知识变“活”(为已掌握,为已活用);2)理论和实践相结合,学会将相关的数据结构和算法应用于解决实际问题,培养数据结构的应用能力和软件工程所需要的实践能力。
《数据结构与算法》的实验类型1)验证性实验—主要是验证教材中已有的数据结构和算法。
2)设计性实验—针对具体问题,应用某一个知识点,自己设计数据结构和算法,培养对数据结构的简单运用能力。
3)综合性实验—针对具体问题,应用某几个知识点,自己设计数据结构和算法,培养对数据结构的综合运用能力。
《数据结构与算法》的实验安排《数据结构与算法》实验的一般步骤1)需求分析:要对简单的问题描述进行详细的分析,充分理解问题,明确问题要求做什么,有什么数据,边界条件……。
2)概要设计:针对问题描述中涉及到数据定义抽象数据类型,设计数据结构和算法模型。
本部分不必考虑实现的细节。
3)详细设计:设计具体的存储结构(用C++或C语言)。
此外,还要设计对象或函数间的调用关系及输入输出。
4)上机调试(运行代码,修正语法及逻辑错误)5)结果与总结《数据结构与算法》的实验要求:1)完成实验预习;2)完成并上交实验报告;3)完成电子设计文档预习/实验报告的格式要求:1)实验名称2)实验目的3)实验内容及要求4)概要设计:ADT5)详细设计:C++类或C函数6)调试分析:7)结果与总结实验一: 顺序表的操作一、实验目的:1)掌握线性表的顺序存储结构与算法实现;3)掌握顺序表的逻辑插入方法。
二、实验内容及要求:实现对有序的顺序表L进行保序插入的(C++或C)算法提示:主函数构建n个整数的顺序表L并调用输出函数;调用保序插入函数实现插入操作并调用输出函数输出。
数据结构实验C语言版
数据结构实验C语言版数据结构实验C语言版第一章实验目的1.熟悉C语言编程环境。
2.掌握数据结构中常用的线性结构和非线性结构。
3.学习使用C语言实现常见的数据结构操作。
4.培养解决实际问题的思维能力。
第二章实验内容1.线性表1.1 顺序表1.1.1 初始化顺序表1.1.2 在顺序表中插入元素1.1.3 删除顺序表中的元素1.1.4 查找顺序表中的元素1.1.5 显示顺序表中的元素1.2 链表1.2.1 初始化链表1.2.2 在链表中插入节点 1.2.3 删除链表中的节点 1.2.4 查找链表中的节点1.2.5 显示链表中的节点2.栈和队列2.1 栈2.1.1 初始化栈2.1.2 入栈操作2.1.3 出栈操作2.1.4 获取栈顶元素2.1.5 判断栈是否为空 2.2 队列2.2.1 初始化队列2.2.2 入队操作2.2.3 出队操作2.2.4 获取队头元素2.2.5 判断队列是否为空3.树和图3.1 二叉树3.1.1 创建二叉树3.1.2 前序遍历二叉树3.1.3 中序遍历二叉树3.1.4 后序遍历二叉树3.1.5 层序遍历二叉树3.2 图3.2.1 创建图3.2.2 深度优先搜索遍历图3.2.3 广度优先搜索遍历图3.2.4 最短路径算法3.2.5 最小树算法第三章实验步骤1.确定实验目标和需求。
2.根据实验内容,编写C语言程序。
3.调试和运行程序,验证程序的正确性。
4.根据实验结果进行分析和总结。
第四章实验结果与分析1.线性表的操作结果分析。
2.栈和队列的操作结果分析。
3.树和图的操作结果分析。
附件:________源代码文件法律名词及注释:________1.版权:________指对作品享有的本质的、来自著作权法的权益。
2.许可证:________指权利人向他人授予合法使用作品的权利的法律文件。
3.商标:________指与一种商品及其生产者和经销者有关的特定名称、标识或符号。
4.注册商标:________指在商标局进行了合法登记并取得专有权的商标。
数据结构 实验指导书
数据结构实验指导书数据结构实验指导书目录数据结构实验指导书 (1)目录 (1)实验指导书概述 (2)上机实验题目 (3)实验一 C语言相关知识复习 (3)一、实验目的 (3)二、实验内容 (3)实验二单链表的插入、删除 (3)一、实验目的 (3)二、实验内容 (3)三、实现提示 (4)实验三栈及其应用 (5)一、实验目的 (5)二、实验内容 (5)实验四二叉树的递归算法 (6)一、实验目的 (6)二、实验内容 (6)实验五图的遍历 (7)一、实验目的 (7)二、实验内容 (7)实验六有序表的查找 (7)一、实验目的 (7)二、实验内容 (7)实验七哈希表 (7)一、实验目的 (7)二、实验内容 (7)实验八内部排序算法的应用 (8)一、实验目的 (8)二、实验内容 (8)实验指导书概述“数据结构”是计算机专业一门重要的专业技术基础课程,是一门关键性核心课程。
本课程系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了多种常用的查找和排序技术,并对其进行了性能分析和比较,内容非常丰富。
本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。
由于以下原因,使得掌握这门课程具有较大难度:∙内容多,时间短,给学习带来困难;∙贯穿全书的动态链表存储结构和递归技术是学习中的重点和难点;∙隐含在各部分的技术和方法丰富,也是学习的重点和难点;∙先修课程中所介绍的专业性知识不多,加大了学习难度。
由于数据结构课程的技术性与实践性,《数据结构课程实验》的设置十分必要。
为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所用到的一些技术。
上机实践是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通过上机实践,使学生在可能短的时间内对数据结构知识的实践和应用有一个比较全面和系统的认识,达到理论与实践相结合的目的。
数据结构实验C语言版
南阳理工学院数据结构(C语言版)上机实验指导书软件学院·软件工程目录实验1 线性表应用实验2 栈和队列的应用 (14)实验3 线性表应用 (27)实验4 图论及其应用 (46)实验5 查找实验6 排序 (64)实验1 线性表应用一、实验目的3,了解和掌握线性表顺序存储和链式存储在计算机中的表示,基本操做在计算机中的实2,能够利用线性表结构对实际问题进行分析建模,利用计算机求解。
1,能够从时间和空间复杂度的角度综合比较线性表两种存储结构的不同特点及其适用场合。
二、实验内容及步骤1、利用程序设计语言分别实现顺序表和链表的抽象数据类型。
2、掌握程序分文件(头文件和实现文件)书写的方式。
3、分别用顺序表和链表实现课本算法 2.2:合并两个非递减有序序列,并对其时间性能做出分析。
三、实验步骤与调试过程以线性表来描述一元多项式,储存结构采用单链表,每个结点储存的多项式中某一项的系数和指数,建立单链表时指数高的结点列于指数低的结点之后,即线性表的元素按指数递增有序排列。
四、实验结果五、疑难小结当线性表的长度变化较大,难以估计其存储规模,另外对线性表频繁进行插入和删除操作时,则采用链表作为存储结构可能会更好一些。
在实际应用中应该考虑以下因素:(1)应有利于运算的实现;(2)应有利于数据的特性;(3)应有利于软件环境。
六、主要算法和程序清单顺序表的非递减数列合并#include<stdio.h> /*包含输入输出头文件*/#define ListSize 100typedef int DataType;typedef struct{DataType list[ListSize];int length;}SeqList;void InitList(SeqList *L)/*将线性表初始化为空的线性表只需要把线性表的长度length置为0*/{L->length=0; /*把线性表的长度置为0*/}int ListEmpty(SeqList L)/*判断线性表是否为空,线性表为空返回1,否则返回0*/{if(L.length==0) /*判断线性表的长度是否为9*/return 1; /*当线性表为空时,返回1;否则返回0*/elsereturn 0;}int GetElem(SeqList L,int i,DataType *e)/*查找线性表中第i个元素。
数据结构 实验指导手册
数学与计算机科学学院计算机科学与技术专业
《数据结构》课程实验
指导手册
目录
实验1:顺序表的定义及其相关操作算法的实现 (1)
实验2:链表的定义及其相关操作算法的实现 (2)
实验3:栈和队列的定义及其基本操作算法的实现 (4)
实验4:串模式匹配算法的设计与实现 (5)
实验5:二叉树的创建、遍历及其它基本操作的实现 (6)
实验6:哈夫曼树及哈夫曼编码的算法实现 (7)
实验7:查找算法的实现(1) (8)
实验8:查找算法的实现(2) (9)
实验9:几个主要排序算法的实现与比较 (10)
实验1:顺序表的定义及其相关操作算法的实现
实验2:链表的定义及其相关操作算法的实现
实验3:栈和队列的定义及其基本操作算法的实现
实验4:串模式匹配算法的设计与实现
实验5:二叉树的创建、遍历及其它基本操作的实现
实验6:哈夫曼树及哈夫曼编码的算法实现
实验7:查找算法的实现(1)
实验8:查找算法的实现(2)
实验9:几个主要排序算法的实现与比较。
《数据结构》学习指导
《数据结构》学习指导说明:本指导以《数据结构》(C语言版)(严蔚敏等编著,清华大学出版社1997年出版,国家级优秀教材特等奖)和《数据结构题集》(严蔚敏等编著,清华大学出版社1999年出版)为教学主要参考书。
一、绪论1、学习目的:明确数据结构课程在本专业知识结构中的地位,作用。
课程的特点,教学的要求,方法。
明确数据结构所研究的问题以及有关基本概念。
初步掌握抽象数据类型的表示与实现,初步明确算法分析的作用与分析的重点,初步掌握算法分析的方法。
2、学习重点:数据的逻辑结构、存储结构及其算法,数据结构的有关概念,抽象数据类型及其表示与实现,算法,算法设计的要求,算法的时间复杂度和算法的空间复杂度。
3、学习难点:数据结构的有关概念,抽象数据类型的表示与实现;算法的时间复杂度分析。
4、课程内容与基本要求(一) 数据结构的引入(1) 三个世界:现实世界,信息世界,机器世界。
数据结构要解决的就是实现从现实世界到信息世界,再由信息世界到机器世界的转换,从而实现用计算机来解决问题的目的。
(2) 非数值问题(结合三个世界讲):控制,管理,数据处理(3) 数值问题:数值计算(4)数据结构:从学科角度讲,数据结构是一门研究非数值计算的程序设计问题中计算机操作对象以及他们之间的关系和操作等等的学科。
(二) 课程的地位,性质,作用。
(1) 地位: 计算机专业的核心课程之一。
(2) 性质: 算法理论基础和软件设计的技术基础课。
(3) 作用: 程序设计的基础,编译程序,操作系统,数据库系统及软件系统和应用程序的基础(三) 数据结构的产生和发展(四) 课程的特点,学习的要求教材:《数据结构》(C语言版)严蔚敏等编著北京清华大学出版社1997年参考书:《数据结构》许卓群等编著北京高等教育出版社1987年数据结构实用教程》(C/C++描述)徐孝凯北京清华大学出版社1999年《数据结构题集》严蔚敏等编著北京清华大学出版社1999年《数据结构导学》苏光奎等编著北京清华大学出版社20XX年《数据结构》(C语言篇)-习题与解析李春葆编著北京清华大学出版社20XX年《数据结构》实验指导书唐开山自编讲义20XX年(五) 基本概念和术语数据数据元素数据对象(4)数据结构:按某种逻辑关系组织起来的一批数据,按一定的存储表示方式把它存储到计算机的存储器中,并在这些数据上定义了一个运算的集合,叫做一个数据结构。
《数据结构》(C语言版)严蔚敏著_实验指导
《数据结构》实验指导及报告书 / 学年第学期姓名:______________学号:______________班级:______________指导教师:______________数学与统计学院2011预备实验 C语言的函数数组指针结构体知识一、实验目的1、复习C语言中函数、数组、指针、结构体与共用体等的概念。
2、熟悉利用C语言进行程序设计的一般方法。
二、实验预习说明以下C语言中的概念1、函数:2、数组:3、指针:4、结构体5、共用体三、实验内容和要求1、调试程序:输出100以内所有的素数(用函数实现)。
#include<>int isprime(int n){ /*判断一个数是否为素数*/int m;for(m=2;m*m<=n;m++)if(n%m==0) return 0;return 1;}int main(){ /*输出100以内所有素数*/ int i; printf("\n");for(i=2;i<100;i++)if(isprime(i)==1) printf("%4d",i);return 0;}运行结果:2、调试程序:对一维数组中的元素进行逆序排列。
#include<>#define N 10int main(){int a[N]={0,1,2,3,4,5,6,7,8,9},i,temp;printf("\nthe original Array is:\n ");for(i=0;i<N;i++)printf("%4d",a[i]);for(i=0;i<N/2;i++){ /*交换数组元素使之逆序*/ temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}printf("\nthe changed Array is:\n");for(i=0;i<N;i++)printf("%4d",a[i]);return 0;}运行结果:3、调试程序:在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素即为该二维数组的一个鞍点。
数据结构实验指导书教材
给大家的实验文档中分为一下几部分1.实验准备:请好好复习C语言,有时间也复习一下C++。
2.c语言实验教案中是一些c语言的基础知识,包括VC环境的使用和程序的调试,希望对c 语言已经忘记的同学好好看看复习一下。
(程序的编写调试是长年累月的过程,需要不断的积累,写得多了,程序调试的多了,自然就熟练了)3.对应的flash课件:其中是一些实验的flash课件演示,给大家做一下参考4.实验指导书和实验教案大家在做每个实验前都需要看看。
阅读的时候,可以使用【视图】|【文档结构图】,可以比较自由跳到相应位置5. 总体实验难度比较大,时间紧,单靠实验课上的几个学时,作为初学者是无法完成的,需要大家在课前课后尽自己最大的努力。
6.每个实验的代码编写可以用c也可以用c++7. 实验前要写预习报告,格式跟实验报告一致,实验结束后,可以直接在其上修改实验代码,加上实验小结,作为实验报告上交。
实验报告必须手写!!代码部分可以只写关键代码。
实验安排1、多项式加减法,2学时2、栈和队列的应用,2学时3、迷宫,4学时4、二叉树的建立和遍历,4学时5、归并排序,2学时6、图,2学时实验一 多项式加减法 一、实验目的通过实现多项式的加减法,对链表有更深入的了解二、实验内容问题描述:设计一个一元稀疏多项式简单的加减法计算器 实现要求:一元稀疏多项式简单计算器的基本功能是: (1)输入并建立多项式:1785937)(x x x x A +++=; 879228)(x x x x B -+=(2)输出多项式(3)多项式A 和B 相加,建立多项式C =A +B ,并输出相加的结果多项式C(4)选作:多项式A 和B 相减,建立多项式C =A -B ,并输出相加的结果多项式D 方法说明:(1)多项式的输入与存储用带表头结点的单链表存储多项式,链表中的每个节点分别存储多项式各项的系数和指数,即每从键盘输入多项式的一对数(系数,指数),可对应建立链表的一个结点。
C语言与数据结构实验指导(完整版)
Harbin Institute of TechnologyC语言与数据结构实验指导书刘梅索莹田文龙哈工大电子与信息工程学院电子工程系实验1 实验平台一、实验目的1.掌握Microsoft Visual C++ 6.0集成环境的使用方法。
2.掌握C程序在Microsoft Visual C++ 6.0开发环境中的编辑、编译、链接和运行全过程二、实验内容1)启动Microsoft Visual C++ 6.0开发环境双击桌面应用程序图标或云兄“开始”菜单程序组中的Microsoft Visual C++ 6.0应用程序,启动VC++,如图所示图1.1 VC++初始界面2)建立C源程序文件方法1:单机工具栏的“新建文本文件”按钮,打开文本文件编辑界面如下图所示图1.2 文本文件编辑界面方法2:执行“文件”->“新建”命令,在“文件”选项卡下选择C++ Source File 文件类型,然后输入C源程序文件名和保存文职,如图所示,然后单击“确定”按钮,打开源程序文件编辑界面,如图1.4所示。
注意:输入C源程序文件名时必须带上扩展“.c”,否则默认创建的是扩展名为“.cpp”的C++文件。
3)编辑源文件方法1:在如图1.2所示的文本文件编辑界面中输入源程序代码,如图1.5所示。
方法2:在如图1.4所示的C源程序文件编辑界面中编辑源程序代码,如图1.6所示。
图1.3 新建文件图1.4 C源程序文件编辑界面图1.5 文本文件编辑界面编辑源文件图1.6 C源程序编辑界面编辑源文件4)保存源文件源文件编辑结束后,执行“文件”->“保存”命令保存文件,文本文件编辑界面中编辑的源文件保存时必须在文件名后加上扩展名“.c”,否则保存的是扩展名为txt的文本文件,不能编译运行。
5)组件文件执行“组建”->“组建”命令或直接按F7功能键或单机工具栏Build按钮,可以对源文件进行编译、链接而不运行改程序。
c语言与数据结构实验指导完整版
定”按钮,打开源程序文件编辑界面,如图1.4所示。
注意:输入C源程序文件名时必须带上扩展“.c”,否则默认创建的是扩展
名为“.cpp”的C++文件。
3)编辑源文件
方法1:在如图1.2所示的文本文件编辑界面中输入源程序代码,如图1.5所示。
a=getchar();
c=getchar();
prin tf("The character is:%c\ n\n",a);
prin tf("2 .In put a character:' n");
sca nf("%c",&b);
prin tf("The character is:");
putchar(b);
(4)根据实际情况确定各个变量在输出时的宽度和小数位数。
2)参考程序
#include“stdio.h”
#include“math.h”
mai n()
{
float a,b,c,s,area;
printf(“In put a,b,c:\n”);
scanf(“%f ,%f,%f”,&a,&b,&c);
方法2:在如图1.4所示的C源程序文件编辑界面中编辑源程序代码,如图1.6
所示。
图1.3新建文件
图1.4 C源程序文件编辑界面
• li<Virri*l
.fnfx
T-fctl i;M|11■■血 扇‘紙Tffkti唱帝,THij] 1!口 叩W i|,7
a|c«B0i-匸譚百 寰「P*
图1.5文本文件编辑界面编辑源文件
数据结构实验指导书
《数据结构与算法》实验指导书2013年8月目录实验一 C语言编程复习 (3)实验二线形表基本操作的实现 (7)实验三栈和队列基本操作的实现及应用 (18)实验四二叉树算法的实现 (33)实验五图的算法的实现 (49)实验六查找算法的实现 (69)实验七排序算法的实现 (81)实验一 C语言编程复习一、实验目的1.熟悉C语言的上机环境,进一步掌握C语言的结构特点。
2.理解指针与应用的区别。
3.掌握结构体的使用。
4.掌握简单排序方法。
二、实验内容(1)输入一行字符,计算该行字符中包含多少个单词,单词之间用空格分隔开。
(2)利用add函数求两个复数2+3i和4+5i的和。
(要求用结构体来定义复数)(3)一个班上有30名学生,每个学生的数据作为一个记录,每个记录包括学号、姓名、三门课程的成绩和三门课程平均成绩。
从键盘输入学生的学号、姓名及三门课的成绩。
要求打印三门课程平均成绩最高分的学生记录。
三、实验步骤(1)用数组或字符串获取字符,碰到空格即表示新单词的开始。
(2)要求用结构体来定义复数,包括实部和虚部。
(3)定义一个Student的结构体类型,包含学号、姓名、成绩等成员。
四、实现提示struct student{ char num[6];string name;float score[3];float aver;};五、思考与提高思考为何void Swap1(Student, Student )这个函数无法实现两个学生的交换?六、完整参考程序1、#include <iostream>#include <string>using namespace std;void main(){cout<<"输入n个单词,单词之间用空格隔开"<<endl;string str;getline(cin,str);int num=0;int len=str.size();if(len!=0) num=1;for(int i=0;i<len;i++){if(str[i]==' '){num++;}}cout<<"单词个数为:"<<num<<endl;}也可使用数组实现:#include <iostream>using namespace std;void main(){cout<<"输入n个单词,单词之间用空格隔开"<<endl;char str[100];cin>>str;int num=0;for(int i=0;str[i]!='\0';i++){if(str[i]=' '){num++;}}cout<<"单词个数为:"<<num<<endl;}2、#include<iostream>using namespace std;struct complex{float real;float imag;};complex add(complex x1,complex x2){complex sum;sum.real=x1.real+x2.real;sum.imag=x1.imag+x2.imag;return sum;};void main(){complex x1={2,3},x2={4,5},sum;complex add(complex x1,complex x2);sum=add(x1,x2);cout<<"x1="<<x1.real<<"+"<<x1.imag<<"i"<<" "<<"x2="<<x2.real<<"+"<<x2.imag<<"i"<<endl;cout<<"x1+x2="<<sum.real<<"+"<<sum.imag<<"i"<<endl; }3、#include <iostream>#include<string>#include <iomanip>using namespace std;const int n=3;struct student{ char num[6];string name;float score[3];float aver;};int main(){ int i,j,maxi,max,sum;float average;student stud[n];for (i=0;i<n;i++) //输入学生和成绩信息{cout<<"input scores of student "<<i+1<<endl;cout<<"number:";cin>>stud[i].num;cout<<"name:";cin>>stud[i].name;for (j=0;j<3;j++){cout<<"score "<<j+1<<":";cin>>stud[i].score[j];}cout<<endl;} //输入学生和成绩信息average=0;max=0;maxi=0;for (i=0;i<n;i++){sum=0;for (j=0;j<3;j++) //计算每个同学总成绩sum+=stud[i].score[j];stud[i].aver=sum/3.0; //计算每个同学平均成绩if (sum>max) //将某同学平均成绩与目前的最高平均成绩进行比较选择高的那个为最新最高平均成绩{max=sum;maxi=i;}}cout<<" score1 score2 score3 average"<<endl;for (i=0;i<n;i++) //输出所有同学成绩信息{cout<<setw(8)<<stud[i].num<<" "<<setw(10)<<stud[i].name<<" ";for (j=0;j<3;j++)cout<<setw(3)<<stud[i].score[j]<<" ";cout<<stud[i].aver<<endl; } //输出所有同学成绩信息cout<<"The highest score is :"<<stud[maxi].num<<", "<<stud[maxi].name<<", "<<"The average is:"<<stud[maxi].aver;cout<<", three scores:"; //输出最高平均成绩的同学信息for(j=0;j<3;j++)cout<<stud[maxi].score[j]<<" ";cout<<endl;return 0;}实验二线形表基本操作的实现一、实验目的1.熟悉C语言的上机环境,进一步掌握C语言的结构特点。
《数据结构》实验指导书(C语言版2014上半年改).
《数据结构》课程实验指导《数据结构》实验教学大纲课程代码:0806523006 开课学期:3 开课专业:信息管理与信息系统总学时/实验学时:64/16 总学分/实验学分:3.5/0.5一、课程简介数据结构是计算机各专业的重要技术基础课。
在计算机科学中,数据结构不仅是一般程序设计的基础,而且是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础。
数据结构课程主要讨论各种主要数据结构的特点、计算机内的表示方法、处理数据的算法以及对算法性能的分析。
通过对本课程的系统学习使学生掌握各种数据结构的特点、存储表示、运算的原理和方法,学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初步掌握时间和空间分析技术。
另一方面,本课程的学习过程也是进行复杂程序设计的训练过程,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。
二、实验的地位、作用和目的数据结构是一门实践性较强的基础课程,本课程实验主要是着眼于原理和应用的结合,通过实验,一方面能使学生学会把书上学到的知识用于解决实际问题,加强培养学生如何根据计算机所处理对象的特点来组织数据存储和编写性能好的操作算法的能力,为以后相关课程的学习和大型软件的开发打下扎实的基础。
另一方面使书上的知识变活,起到深化理解和灵活掌握教学内容的目的。
三、实验方式与基本要求实验方式是上机编写完成实验项目指定功能的程序,并调试、运行,最终得出正确结果。
具体实验要求如下:1.问题分析充分地分析和理解问题本身,弄清要求,包括功能要求、性能要求、设计要求和约束,以及基本数据特性、数据间联系等等。
2.数据结构设计针对要解决的问题,考虑各种可能的数据结构,并且力求从中选出最佳方案(必须连同算法实现一起考虑),确定主要的数据结构和全程变量。
对引入的每种数据结构和全程变量要详细说明其功用、初值和操作的特点。
《数据结构》实验指导书(C语言版)(浦江学院)
实验1: 顺序表的操作实验一、实验名称和性质二、实验目的1.掌握线性表的顺序存储结构的表示和实现方法。
2.掌握顺序表基本操作的算法实现。
3.了解顺序表的应用。
三、实验内容1.建立顺序表。
2.在顺序表上实现插入、删除和查找操作(验证性内容)。
3.删除有序顺序表中的重复元素(设计性内容)。
四、实验的软硬件环境要求硬件环境要求:PC机(单机)使用的软件名称、版本号:Windows环境下的VC++6.0五、知识准备前期要求熟练掌握了C语言的编程规则、方法和顺序表的基本操作算法。
六、验证性实验1.实验要求编程实现如下功能:(1)根据输入顺序表的长度n和各个数据元素值建立一个顺序表,并输出顺序表中各元素值,观察输入的内容与输出的内容是否一致。
(2)在顺序表的第i个元素之前插入一个值为x的元素,并输出插入后的顺序表中各元素值。
(3)删除顺序表中第i个元素,并输出删除后的顺序表中各元素值。
(4)在顺序表中查找值为e的数据元素,如果查找成功,则显示“查找成功”和该元素在顺序表中的位置,否则显示“查找失败”。
2. 实验相关原理线性表的顺序存储结构称为顺序表,顺序表的存储结构描述为:#define MAXLEN 30 /*线性表的最大长度*/typedef struct{Elemtype elem[MAXLEN]; /*顺序表中存放元素的数组,其中elemtype为抽象数据类型,在程序具体实现时可以用任意类型代替*/int length; /*顺序表的长度,即元素个数*/}Sqlist; /*顺序表的类型*/【核心算法提示】(1)顺序表插入操作的基本步骤:要在顺序表中的第i个数据元素之前插入一个数据元素x,首先要判断插入位置i是否合法,假设线性表的表长为n,则i的合法值范围:1≤i ≤n+1,若是合法位置,就再判断顺序表是否满,如果满,则增加空间或结束操作,如果不满,则将第i个数据元素及其之后的所有数据元素都后移一个位置,此时第i个位置已经腾空,再将待插入的数据元素x插入到该位置上,最后将线性表的表长增加1。
数据结构实验指导书C语言—连接表的操作
《数据结构》实验参考资料目录一、课程编号 (2)二、课程类型 (2)三、本课程的地位、作用与任务 (2)四、课程基本要求 (2)五、实验安排 (2)1、数据结构实验机器与环境 (2)(一)计算机的硬件配置 (2)(二)计算机的软件配置 (2)2、VisualC++6.0开发C语言程序 (2)(一)进入C++工作环境 (2)(二)编译、运行C程序 (2)3、上机实验 (6)实验1:线性表操作 (6)实验2:单链表操作...................................................................... 错误!未定义书签。
实验3:二叉树操作...................................................................... 错误!未定义书签。
实验4:图的运算.......................................................................... 错误!未定义书签。
数据结构(C语言版)实验一、课程编号(本科)二、课程类型课程类型:必修课。
适用专业:计算机大类各专业实验学时:16学时三、本课程的地位、作用与任务《数据结构》在计算机科学中是一门综合性的专业基础课。
数据结构的研究不仅涉及到计算机硬件的研究范围,而且和计算机软件的研究有密切的关系,可以认为数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。
在计算机科学中,数据结构不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其它系统程序和大型应用程序的重要基础,它的主要任务是讨论各种数据结构的逻辑结构,存储结构及有关操作的算法。
目的是使学生学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,并初步了解对算法的时间分析和空间分析技术。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
int Sqlist_search(Sqlist L,Elemtype x)
/* 在顺序表中查找值为 x 的元素,如果找到,则函数返回该元素在顺序表中的位置,否则返回 0*/
5
{ for (i=0;i<L.length&&L.elem[i]!=x;i++); /*从第一个元素开始依次将每个元素值与给定值 x 比较*/
int length; /*顺序表的长度,即元素个数*/ }Sqlist; /*顺序表的类型*/
【核心算法提示】 1.顺序表插入操作的基本步骤:要在顺序表中的第 i 个数据元素之前插入一个数据元
素 x,首先要判断插入位置 i 是否合法,假设线性表的表长为 n,则 i 的合法值范围:1≤i≤ n+1,若是合法位置,就再判断顺序表是否满,如果满,则增加空间或结束操作,如果不满, 则将第 i 个数据元素及其之后的所有数据元素都后移一个位置,此时第 i 个位置已经腾空, 再将待插入的数据元素 x 插入到该位置上,最后将线性表的表长增加 1。
实验性质 □验证 □综合 √设计
二、实验目的
必做/选做 √必做 □选做
1.掌握线性表的顺序存储结构的表示和实现方法。 2.掌握顺序表基本操作的算法实现。 3.了解顺序表的应用。 三、实验内容
1.建立顺序表。 2.在顺序表上实现插入、删除和查找操作(验证性内容)。 3.删除有序顺序表中的重复元素(设计性内容)。 4.完成一个简单学生成绩管理系统的设计(应用性设计内容)。 四、实验的软硬件环境要求
2.顺序表删除操作的基本步骤:要删除顺序表中的第 i 个数据元素,首先仍然要判断 i 的合法性,i 的合法范围是 1≤i≤n,若是合法位置,则将第 i 个数据元素之后的所有数据 元素都前移一个位置,最后将线性表的表长减 1。
3.顺序表查找操作的基本步骤:要在顺序表中查找一个给定值的数据元素,则可以采 用顺序查找的方法,从顺序表中第 1 个数据元素开始依次将数据元素值与给定值进行比较, 若相等则返回该数据元素在顺序表中的位置,否则返回 0 值。 【核心算法描述】
七、实验项目与内容提要
序 实验名称
号
目的要求、内容提要 (限 20 字)
每组 实验 人数 学时
1 顺 序 表 的 基 本 熟悉并完成顺序表上基本操作 1 个 2
操作
的算法及其应用问题的编程实 班
现。
2 链 表 的 基 本 操 熟悉并完成单链表和双向链表 1 个 2
作
基本操作算法的编程实现。
班
3 栈的基本操作 熟悉并完成顺序栈和链栈基本 1 个 2
} status Sqlist_delete(Sqlist &L,int i,Elemtype &e)
/t;1||i>L.length) return ERROR; /*删除位置不正确则出错*/
for(j=i;j<=L.length-1;j++) L.elem[j-1]=L.elem[j]; /*将第 i+1 个元素及后继元素位置向前移一位*/
return L; } Sqlist Sqlist_delete(Sqlist L,int i) /*顺序表删除函数*/ {int j;
《数据结构》课程实验指导
《数据结构》实验教学大纲
课程代码:0806523006
开课学期:3
开课专业:信息管理与信息系统
总学时/实验学时:64/16 总学分/实验学分:3.5/0.5
一、课程简介 数据结构是计算机各专业的重要技术基础课。在计算机科学中,数据结构不仅是一般程
序设计的基础,而且是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开 发的重要基础。数据结构课程主要讨论各种主要数据结构的特点、计算机内的表示方法、处 理数据的算法以及对算法性能的分析。通过对本课程的系统学习使学生掌握各种数据结构的 特点、存储表示、运算的原理和方法,学会从问题入手,分析研究计算机加工的数据结构的 特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初 步掌握时间和空间分析技术。另一方面,本课程的学习过程也是进行复杂程序设计的训练过 程,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的 能力。
if (i<L.length) return i;
else return o;
} 3.源程序代码参考
#define MAXLEN 50 typedef struct{int elem[MAXLEN]; int length;}Sqlist; Sqlist Sqlist_insert(Sqlist L,int i,int x) /*顺序表插入函数*/ {int j;
四、报告与考核 每个实验都要求学生根据上机内容写出实验报告,报告要求包括以下七个方面的内容: 1.实验目的; 2.实验内容; 3.实验要求; 4.算法设计; 5.详细程序清单; 6.程序运行结果; 7.实验心得体会。
考核方式: 每个实验项目根据以下两个方面进行考核: 1.指导教师随堂抽查学生的实验过程(包括实验预习、实验出勤、实验结果的测试),
status Sqlist_insert(Sqlist &L,int i,Elemtype x) /*在顺序表 L 中第 i 个元素前插入新元素 x*/
{ if (i<1||i>L.length+1) return ERROR; /*插入位置不正确则出错*/ if (L.length>=MAXLEN) return OVERFLOW; /*顺序表 L 中已放满元素,再做插入操作则溢出*/ for(j=L.length-1;j>=i-1;j--) L.elem[j+1]=L.elem[j];/*将第 i 个元素及后续元素位置向后移一位*/ L.elem[i-1]=x; /*在第 i 个元素位置处插入新元素 x*/ L.length++; /*顺序表 L 的长度加 1*/ return OK;
2
[7]蔡子经,施伯乐.数据结构教程.上海:复旦大学出版社.1994 [8]严蔚敏,吴伟民.数据结构(C 语言版).北京:清华大学出版社.1999; [9]严蔚敏,吴伟民.数据结构题集(C 语言版).北京:清华大学出版社.1999; [10]徐孝凯.数据结构课程实验.北京:清华大学出版社.2002; [11]孟佳娜,胡潇琨.算法与数据结构实验与习题.北京:机械工业出版社.2004.
序查找、二分查找和索引查找 班
算法的编程实现
7 二叉排序树的 熟悉并完成在二叉排序树上进 1 个 2
查找操作
行查找、插入和删除操作的编 班
程实现。
8 哈希表上的查 熟悉并完成哈希表的建立、查 1 个 2
找操作
找和插入操作的编程实现
班
9 排序操作
熟悉并完成几种主要排序操作 1 个 2
的编程实现。
班
10 图的遍历
三、实验方式与基本要求 实验方式是上机编写完成实验项目指定功能的程序,并调试、运行,最终得出正确结果。
具体实验要求如下: 1. 问题分析 充分地分析和理解问题本身,弄清要求,包括功能要求、性能要求、设计要求和约束,
以及基本数据特性、数据间联系等等。 2. 数据结构设计 针对要解决的问题,考虑各种可能的数据结构,并且力求从中选出最佳方案(必须连同
算法实现一起考虑),确定主要的数据结构和全程变量。对引入的每种数据结构和全程变量 要详细说明其功用、初值和操作的特点。
3. 算法设计 算法设计分概要和详细设计。概要设计着重解决程序的模块设计问题,这包括考虑如何 把被开发的问题程序自顶向下分解成若干程序模块,并决定模块的接口,即模块间的相互关 系以及模块之间的信息交换问题。详细设计则要决定每个模块内部的具体算法,包括输入、 处理和输出。
六、实验指导书及主要参考书 [1]朱蓉.数据结构实验指导书 [2]张铭.数据结构与算法. 高教出版社.2008.6 [3]张铭.数据结构与算法--学习指导与习题解析. 高教出版社.2009 [4]耿国华等 数据结构-C 语言描述. 高教出版社.2005.7 [5]刘怀亮. 数据结构(C 语言描述) .冶金出版社.2005.2 [6]刘怀亮. 数据结构(C 语言描述)习题与实验指导导.冶金出版社.2005.2
if(i<1||i>L.length+1) printf("ERROR!");
else if(L.length>=MAXLEN) printf("OLERFLOW!");
else { for(j=L.length-1;j>=i-1;j--) L.elem[j+1]=L.elem[j]; L.elem[i-1]=x; L.length++; }
并根据抽查结果评定学生成绩,此成绩占此实验总成绩的 70%; 2.学生编写课程设计实验报告,每位学生按照实验报告的内容和要求编写详细的实验
报告并打印上交给指导老师,由指导老师根据每位学生的完成情况评定成绩,此成绩占实验 总成绩的 30%。
五、设备及器材材料配置 硬件:奔腾以上 PC 机 软件:TURBO C、C++或 Java
1
4. 测试用例设计 准备典型测试数据和测试方案。测试数据要有代表性、敏感性。测试方案包括模块测试 和模块集成测试。 5. 上机调试 对程序进行编译,纠正程序中可能出现的语法错误。调试前,先运行一遍程序看看究竟 将会发生什么。如果情况很糟,则根据事先设计的测试方案并结合现场情况进行错误跟踪, 包括打印执行路径或输出中间变量值等手段。 6. 程序性能分析 在运行结果正确的前提下再分析程序中主要算法是否具有较好的时间复杂度和空间复 杂度。如果没有,则通过改变数据结构或操作方法使编写的程序性能达到最佳。 7. 实验总结 每个实验完成后要认真书写实验报告,对程序运行的结构,要认真分析,总结每次实验 项目的体会与收获。