09101数据结构(C语言基础)1实验指导书

合集下载

数据结构实验指导书

数据结构实验指导书

《数据结构》实验指导书实验一、顺序表实验目的:熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作。

实验要求:了解并熟悉顺序表的逻辑特性、存储表示方法和顺序表的基本操作的实现和应用。

实验内容:编写程序实现下列的要求:(1) 设数据元素为整数,实现这样的线性表的顺序存储表示。

(2) 键盘输入10个数据元素,利用顺序表的基本操作,建立该表。

(3) 利用顺序表的基本操作,找出表中的最大的和最小的数据元素(用于比较的数据元素为整数)。

(4) * 若数据元素为学生成绩(含姓名、成绩等字段),重新编程,实现上面的要求。

要求尽可能少地修改前面的程序来得到新程序。

(这里用于比较的字段为分数)练习及思考题:(1)顺序表的操作上有什么特点?(2)不固定数据元素的个数,而通过特殊数据来标记输入数据的结束,实现这样的输入操作。

实验二、链表实验目的:熟悉链式表的逻辑特性、存储表示方法的特点和链式表的基本操作。

实验要求:了解并熟悉链式表的逻辑特性、存储表示方法和链式表的基本操作的实现和应用。

实验内容:编写程序实现下列的要求:(1) 设学生成绩表中的数据元素为学生成绩(含姓名、成绩字段),实现这样的线性表的链式存储表示。

(2) 键盘输入若干个数据元素(用特殊数据来标记输入数据的结束),利用链表的基本操作(前插或后插算法),建立学生成绩单链表。

(3) 键盘输入关键字值x,打印出表中所有关键字值<=x的结点数据。

(用于比较的关键字字段为分数)。

(4) 输入关键字值x,删除表中所有关键字值<=x的结点。

(用于比较的关键字字段为分数)。

练习及思考题:(1)不同类型的数据元素所对应的链式表在类型定义和操作实现上有什么异同?(2)有头结点的链式表,有什么特点?实验三、栈的应用实验目的:熟悉栈的逻辑特性、存储表示方法和栈的基本操作。

实验要求:了解并熟悉栈的逻辑特性、顺序和链式存储表示方法和栈的基本操作的实现和应用。

实验内容:(1) 判断一个表达式中的括号(仅有一种括号,小、中或大括号)是否配对。

09级《数据结构》实验指导书

09级《数据结构》实验指导书

《数据结构实验指导书》潘向辉/吴学毅编写印包学院数字媒体技术专业2011年3月实验说明【实验环境】操作系统:Microsoft Windows XP/2000。

编程语言:C语言【实验要求】1.实验前,了解实验目的、实验内容及相关的基本理论知识,并按照实验内容要求设计程序流程,书写预习报告;2.本课程实验均为单人单组,独立完成;3.实验所用计算机固定,以便实现实验之间的延续性;4.按要求完成实验内容,在实验结束后按照格式和规范撰写实验报告。

【实验项目及学时分配】1.实验报告撰写符合格式及规范要求,详见实验报告撰写格式及规范;2.本课程实验占课程总成绩的15%。

实验(一)线性表一、实验项目名称:线性表课时:4学时二、实验要求1、掌握顺序表的定义与实现,包括查找、插入、删除算法的实现;2、掌握在各种链表结构中实现线性表操作的基本方法,能在实际应用中选用适当的链表结构;三、实验环境Widows操作系统、C语言四、实验内容(1)顺序表建立一如下表所示的学生信息表使用结构体,用顺序表完成以下内容:1.初始化线性表为空;2.依次输入数据元素;(由键盘输入)3.完成数据元素的插入、删除操作;4.取第i个数据元素;5.依次显示当前线性表中的数据元素。

(2)单链表建立一个单链表,依次输入数据元素0~9。

使用结构体,用单链表完成以下内容:1.初始化单链表;2.在单链表指定位置插入一个数据元素;3.删除指定位置的一个数据元素;4.取第i个数据元素;5.查找数据元素x 是否在单链表中;6.销毁单链表;五、思考题:在什么情况下使用顺序表比链表好?实验(二)栈和队列一、实验项目名称:栈和队列课时:2学时二、实验要求1、掌握栈的顺序表示、链表表示以及相应操作的实现。

特别注意栈空和栈满的条件;2、掌握队列的顺序表示、链表表示以及相应操作的实现。

特别是循环队列中队头与队尾指针的变化情况;三、实验环境Widows操作系统、VC6.0四、实验内容分别使用顺序循环队列和堆栈以及链式队列和堆栈编写程序:判断一个字符序列是否是回文。

数据结构实验指导书

数据结构实验指导书

数据结构实验指导书一、实验目的数据结构是计算机科学中的重要基础课程,通过实验,旨在帮助学生更好地理解和掌握数据结构的基本概念、原理和算法,提高学生的编程能力和问题解决能力。

具体而言,实验的目的包括:1、加深对常见数据结构(如数组、链表、栈、队列、树、图等)的理解,掌握其特点和操作方法。

2、培养学生运用数据结构解决实际问题的能力,提高算法设计和程序实现的能力。

3、增强学生的逻辑思维能力和调试程序的能力,培养学生的创新意识和团队合作精神。

二、实验环境1、操作系统:Windows 或 Linux 操作系统。

2、编程语言:C、C++、Java 等编程语言中的一种。

3、开发工具:如 Visual Studio、Eclipse、Code::Blocks 等集成开发环境(IDE)。

三、实验要求1、实验前,学生应认真预习实验内容,熟悉相关的数据结构和算法,编写好实验程序的代码框架。

2、实验过程中,学生应独立思考,认真调试程序,及时记录实验过程中出现的问题及解决方法。

3、实验完成后,学生应撰写实验报告,包括实验目的、实验内容、实验步骤、实验结果、问题分析与解决等。

四、实验内容(一)线性表1、顺序表的实现与操作实现顺序表的创建、插入、删除、查找等基本操作。

分析顺序表在不同操作下的时间复杂度。

2、链表的实现与操作实现单链表、双向链表的创建、插入、删除、查找等基本操作。

比较单链表和双向链表在操作上的优缺点。

(二)栈和队列1、栈的实现与应用实现顺序栈和链式栈。

利用栈解决表达式求值、括号匹配等问题。

2、队列的实现与应用实现顺序队列和链式队列。

利用队列解决排队问题、广度优先搜索等问题。

(三)树1、二叉树的实现与遍历实现二叉树的创建、插入、删除操作。

实现二叉树的前序、中序、后序遍历算法,并分析其时间复杂度。

2、二叉搜索树的实现与操作实现二叉搜索树的创建、插入、删除、查找操作。

分析二叉搜索树的性能。

(四)图1、图的存储结构实现邻接矩阵和邻接表两种图的存储结构。

数 据 结 构(C语言版) 实 验 指 导包含参考讲述

数 据 结 构(C语言版) 实 验 指 导包含参考讲述

数据结构(C语言版)实验指导预备实验C语言的函数、数组、指针和结构体知识一、实验目的1、复习C语言中函数、数组、指针、结构体与共用体等的概念。

2、熟悉利用C语言进行程序设计的一般方法。

二、实验内容1、调试程序:输出100以内所有的素数(用函数实现)。

#include<stdio.h>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<stdio.h>#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、调试程序:在二维数组中,若某一位置上的元素在该行中最大,而在该列中最小,则该元素即为该二维数组的一个鞍点。

数据结构实验指导书(C版)

数据结构实验指导书(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 类型来定义变量,可以调用实现基本操作的函数来完成相应的功能。

09级《数据结构》实验指导书

09级《数据结构》实验指导书

《数据结构实验指导书》潘向辉/吴学毅编写印包学院数字媒体技术专业2011年3月实验说明【实验环境】操作系统:Microsoft Windows XP/2000。

编程语言:C语言【实验要求】1.实验前,了解实验目的、实验内容及相关的基本理论知识,并按照实验内容要求设计程序流程,书写预习报告;2.本课程实验均为单人单组,独立完成;3.实验所用计算机固定,以便实现实验之间的延续性;4.按要求完成实验内容,在实验结束后按照格式和规范撰写实验报告。

【实验项目及学时分配】【实验报告及考核】1.实验报告撰写符合格式及规范要求,详见实验报告撰写格式及规范;2.本课程实验占课程总成绩的15%。

实验(一)线性表一、实验项目名称:线性表课时:4学时二、实验要求1、掌握顺序表的定义与实现,包括查找、插入、删除算法的实现;2、掌握在各种链表结构中实现线性表操作的基本方法,能在实际应用中选用适当的链表结构;三、实验环境Widows操作系统、C语言四、实验内容(1)顺序表建立一如下表所示的学生信息表使用结构体,用顺序表完成以下内容:1.初始化线性表为空;2.依次输入数据元素;(由键盘输入)3.完成数据元素的插入、删除操作;4.取第i个数据元素;5.依次显示当前线性表中的数据元素。

(2)单链表建立一个单链表,依次输入数据元素0~9。

使用结构体,用单链表完成以下内容:1.初始化单链表;2.在单链表指定位置插入一个数据元素;3.删除指定位置的一个数据元素;4.取第i个数据元素;5.查找数据元素x 是否在单链表中;6.销毁单链表;五、思考题:在什么情况下使用顺序表比链表好?实验(二)栈和队列一、实验项目名称:栈和队列课时:2学时二、实验要求1、掌握栈的顺序表示、链表表示以及相应操作的实现。

特别注意栈空和栈满的条件;2、掌握队列的顺序表示、链表表示以及相应操作的实现。

特别是循环队列中队头与队尾指针的变化情况;三、实验环境Widows操作系统、VC6.0四、实验内容分别使用顺序循环队列和堆栈以及链式队列和堆栈编写程序:判断一个字符序列是否是回文。

测绘2009数据结构指导书(实验一)

测绘2009数据结构指导书(实验一)
2、线性表的链式存储结构实现(选作)
1)问题描述
链表的基本运算主要包括:创建链表、查找、插入、删除等操作。试编程实现链表的这 些基本运算。
2)基本要求
实现链表的每个运算要求用一个函数实现。
3)算法描述
在设计链表的各种运算之前,最重要的准备工作是定义链式存储(即链表)的结点类型, 最简单的单链表的结点类型可由数据域 data 和指针域 next 两部分组成。然后再分别设计各 种运算的具体函数。最后在主函数中实现链表的各种运算时,分别调用相应的函数即可。
//表长度 //数组尺寸
} SqList; //-------- 线性表的基本运算 ----------------------------//运算 1:初始化空顺序表 L Status InitList(SqList *L) {// 算法 2.3
L->elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)); //分配数组空间 if (!L->elem) return OVERFLOW; //若分配失败,函数结束(返回值=-2) L->length=0; //表长度初值为 0
if(i<1||i>L->length) return ERROR; //若 i 值不合法,则退出函数 e=L->elem[i-1]; for(int j=i-1; j<L->length -1; j++) L->elem[j]=L->elem[j+1]; L->length--; // 表长减 1 return OK; } void main(void) { SqList q, *L; ElemType e; L=&q; InitList(L); //此处省略……

数据结构课程实验指导书

数据结构课程实验指导书

《数据结构》实验指导书第一部分前言一、实验的目的《数据结构》是计算机学科一门重要的专业基础课程,也是计算机学科的一门核心课程。

本课程的另一重要教学目的是训练学生进行复杂程序设计的技能和培养良好程序设计的习惯,要做到这一点,上机实习是必须的。

数据结构实验是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。

通常,实验课题中的问题比平时的习题复杂得多,也更接近实际。

实验着眼于原理与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,训练学生实际动手进行程序设计和调试程序的能力,加深对数据结构相关概念和算法的理解。

通过完成本实验课程的实验,学生应学会并掌握本课程的基本和重点知识,深刻理解逻辑结构、物理结构和算法设计之间的关系,初步学会算法分析的方法,并能在一定范围内运用所掌握的分析方法进行算法分析,培养软件工作所需要的动手能力和作为一个软件工作者所应具备的科学工作方法和作风。

二、实验前的准备工作1.每个学生需配备一台计算机,操作系统需Windows2000/XP以上版本,软件需Visual C++6.0以上版本。

2.实验前要求学生按实验要求编写好相关实验程序,准备上机调试运行。

三、实验的步骤(一)建立一个文件夹,如“数据结构”,用来存放自己的所有实验程序,在该文件夹中建立子目录用来存放每个项目(一个子目录一个项目),如“顺序表”,项目中需要的所有文件都存在该文件夹中。

(二)新建一个项目文件1.双击Visual C++ 6.0快捷图标,进入Visual C++ 6.0集成开发环境;或者点击“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”进入Visual C++ 6.0集成开发环境。

2.单击“File”菜单,选择“New”命令3.创建一个项目文件并保存在项目所在文件夹中;3. 创建源程序文件并保存在项目所在文件夹中;4.输入源程序;5.单击“保存”按钮保存源程序。

数据结构实验指导书C语言—连接表的操作

数据结构实验指导书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学时三、本课程的地位、作用与任务《数据结构》在计算机科学中是一门综合性的专业基础课。

数据结构的研究不仅涉及到计算机硬件的研究范围,而且和计算机软件的研究有密切的关系,可以认为数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。

在计算机科学中,数据结构不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其它系统程序和大型应用程序的重要基础,它的主要任务是讨论各种数据结构的逻辑结构,存储结构及有关操作的算法。

目的是使学生学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,并初步了解对算法的时间分析和空间分析技术。

数据结构实验C语言版

数据结构实验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个元素。

数据结构实验指导书及其答案pdf

数据结构实验指导书及其答案pdf

引言概述正文内容
1.实验环境配置
1.1硬件要求
计算机硬件配置要求
操作系统要求
附加硬件设备要求(如虚拟机等)
1.2软件要求
编程语言要求(如C/C++、Java等)开发环境配置(如IDE、编译器等)1.3实验库和工具
实验需要使用的库文件和工具
如何获取和配置实验库和工具
2.实验内容介绍
2.1实验目标和背景
数据结构实验的作用和意义
实验背景和相关应用领域介绍
2.2实验概述
实验内容的大致流程和步骤
实验中可能遇到的问题和挑战
2.3实验要求
对学生实验流程和实验结果的要求
实验过程中需要注意的事项和技巧
3.实验步骤
3.1实验准备
配置实验环境
获取实验所需数据和文件
3.2实验具体步骤
根据实验要求将数据结构知识应用到具体问题中根据实验要求实现相应的算法和数据结构
3.3实验示例代码
提供示例代码以供学生参考和学习
解析示例代码中的关键步骤和实现细节
4.实验答案
4.1实验题目
实验题目及相关说明
确定实验的具体要求和目标
4.2实验答案解析
对实验答案的具体实现进行解析
对实验中可能遇到的问题和错误进行分析和解决4.3实验答案示例
提供实验答案的示例代码
解析实验答案中的关键实现步骤和说明
5.实验总结
5.1实验成果评估
对学生实验成果进行评估
分析实验结果的优点和不足
5.2实验心得
学生对本次实验的收获和感想
学生对未来实验的建议和展望
总结。

数据结构实验指导书教材

数据结构实验指导书教材

给大家的实验文档中分为一下几部分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

数据结构实验指导书C

《数据结构》实验指导书(适用于计算机应用、软件技术专业)信息工程系目录前言 ................................................................................................................ 错误!未定义书签。

实验一、单链表的基本操作......................................................................... 错误!未定义书签。

实验二栈和队列........................................................................................... 错误!未定义书签。

实验三串....................................................................................................... 错误!未定义书签。

实验四二叉树的遍历................................................................................... 错误!未定义书签。

实验五树的应用........................................................................................... 错误!未定义书签。

实验六图....................................................................................................... 错误!未定义书签。

实验七、折半查找和二叉排序树................................................................. 错误!未定义书签。

《数据结构》实验指导书(有代码)

《数据结构》实验指导书(有代码)

数据结构实验指导书东华大学计算机科学与技术学院2009年9月目录前言 (1)一、概述 (1)二、实验步骤 (2)三、实验报告规范 (5)四、算法书写规范 (6)五、参考书目 (9)实验〇顺序表与链表 (10)实验〇实验报告示例 (12)实验一线性表 (25)实验报告示例:集合的并、交和差运算 (28)实验二栈和队列 (42)实验报告示例:迷宫问题 (45)实验三树和二叉树 (57)实验四图 (60)实验五查找 (63)实验六排序 (65)实验七综合设计性实验——航班信息的查询与检索 (67)前言一、概述上机实验是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。

通常,实验题中的问题比平时的习题复杂得多,也更接近实际。

实验着眼于原理与应用的结合点,使读者学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。

平时的练习较偏重于如何编写功能单一的“小”算法,而实验题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。

此外,还有很重要的一点是:机器是比任何教师都严厉的检查者。

为了达到上述目的,本指导书安排了七个主实验单元(其中除实验0作为预备练习,训练数组和链表的编程方法和编程技巧),其它各单元的训练重点在于基本的数据结构,而不强调面面俱到。

各实验单元与教科书的各章只具有粗略的对应关系,一个实验题常常涉及几部分教学内容。

在每个实验单元中安排有难度不等的实验题,经验表明,如果某题的难度略高于自己过去所对付过的最难题目的难度,则选择此题能够带来最大的收益。

切忌过分追求难题或者容易的题目。

一些实验题采取了统一的格式(其余的实验题由于比较简单,没有这么详细列出来,读者可举一反三),由问题描述、基本要求、测试数据、实现提示和选做内容五个部分组成。

数据结构实验指导书(09级)

数据结构实验指导书(09级)

数据结构实验指导书(09级)数据结构作业和实验指导书数据结构课程组工业大学计算机学院2021年3月Word 资料目录第1章概述1.1 课程、教材和实验1.2 作业和实验安排第2章算法设计实验和上机2.1 数据结构习题概述2.2 算法设计的上机作业要求2.3 算法设计上机作业第3章抽象数据类型的实现3.1 实验概要3.2 实验目的3.3 预习与参考3.4 实验要求和设计指标3.5 实验仪器设备和材料3.6 调试及结果测试3.7 考核形式3.8 实验报告要求3.9 思考题3.10 示例第4章课程设计4.1 课程设计概述Word 资料4.2 课程设计时间和容4.3 课程设计步骤4.4 课程设计报告例4.5 课程设计考核形式和评分标准Word 资料第1章概述1.1 课程、教材和实验数据结构是计算机科学的算法理论基础和软件设计的技术基础,主要研究信息的逻辑结构及其基本操作在计算机中的表示和实现。

数据结构不仅是计算机专业的核心课程,而且已成为其他理工专业的热门选修课。

课程的教学要求之一是训练学生进行复杂程序设计的技能和培养良好程序设计的习惯, 其重要程度决不亚于知识传授。

因此,在数据结构的整个教学过程中, 完成习题作业和上机实习是两个至关重要的环节。

习题的作用在于帮助学生深入理解教材容, 巩固基本概念, 达到培养良好程序设计能力和习惯的目的。

从认知的程度划分,数据结构的习题通常可分为三类:基础知识题、算法设计题和综合实习题。

基础知识题主要是检查对概念知识的识记和理解,一般可作为学生自测题。

算法设计题的目的是练习对原理法的简单应用,多数是要求在某种数据存储结构上实现某一操作,是数据结构的基础训练,构成了课外作业的主体。

综合实习题则训练对知识的综合应用和软件开发能力,主要是针对具体应用问题,选择、设计、和实现抽象数据类型(ADT)的可重用模块,并以此为基础开发满足问题要求的小型应用软件,应将其看作软件工程的综合性基础训练的重要一环,给予足够的重视。

《数据结构》实验指导书(C语言版)(浦江学院)

《数据结构》实验指导书(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。

数据结构实验指导书1

数据结构实验指导书1

北京林业大学实验任务书备注:实验共分4次,其中实验1――实验3为设计性实验,实验4为综合性实验,具体安排下面一一列出。

北京林业大学09学年—10学年第 2学期数据结构实验任务书专业名称:实验学时: 4课程名称:数据结构任课教师:李冬梅实验题目:线性表的基本操作实验环境: Visual C++实验目的:1、掌握线性表的定义;2、掌握线性表的基本操作,如建立、查找、插入和删除等。

实验内容:定义一个包含学生信息(学号,姓名,成绩)的的顺序表和链表,使其具有如下功能:(1) 根据指定学生个数,逐个输入学生信息;(2) 逐个显示学生表中所有学生的相关信息;(3) 根据姓名进行查找,返回此学生的学号和成绩;(4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩);(5) 给定一个学生信息,插入到表中指定的位置;(6) 删除指定位置的学生记录;(7) 统计表中学生个数。

实验提示:学生信息的定义:typedef struct {char no[8]; //8位学号char name[20]; //姓名int price; //成绩}Student;顺序表的定义typedef struct {Student *elem; //指向数据元素的基地址int length; //线性表的当前长度}SqList;链表的定义:typedef struct LNode{Student data; //数据域struct LNode *next; //指针域}LNode,*LinkList;实验要求:(1) 程序要添加适当的注释,程序的书写要采用缩进格式。

(2) 程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。

(3) 程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。

(4) 根据实验报告模板详细书写实验报告,在实验报告中给出链表根据姓名进行查找的算法和插入算法的流程图。

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

《数据结构Ⅰ》实验指导书C语言基础(适用于电子商务专业、计算机相关专业)山东建筑大学商学院电子商务教研室2008-9实验一C源程序的编辑、编译、调试和运行 (3)实验二基本输入/输出函数和运算符、表达式 (5)实验三顺序结构、选择结构程序设计 (8)实验四循环结构程序设计 (12)实验五数组的应用 (17)实验六函数的应用 (20)实验七指针的应用 (21)实验八结构体的应用 (23)实验一C源程序的编辑、编译、调试和运行一、实验目的及任务:1、熟悉C语言运行环境TC3.0和VC++。

2、掌握C语言程序的书写格式和C语言程序的结构。

3、掌握C语言上机步骤,了解运行一个C程序的方法。

二、实验环境TC编程环境;VC++编程环境;主机操作系统为Windows2000或Windows XP;三、预备知识要深入掌握TC编译环境,熟悉各个命令;掌握VC++编译环境。

四、实验步骤1、C语言上机步骤:(1)安装TC3.0。

(2)进入系统。

在C盘或其他盘上找到TC或TURBOC2,然后双击其图标打开文件夹,在TC/BIN/中找到TC.EXT并双击即可。

然后进行编辑源程序->编译->连接->执行程序->显示结果(3)常用命令编辑切换(F6,编译(F9),运行(CTRL+F9),显示结果(ALT+F5)其它常用命令见"附录一".2、使用VC++建立C源程序(1)打开VC++编译软件,通过“file/new/win32 consloe application”建立一个空工程,输入工程名字;(2)再运行”file/new/c++ source file”建立一个C源文件,输入文件名;(3)编辑源程序代码3、有下面的C程序,目的是求两个由键盘输入的数的乘积。

试编译运行,查看结果。

/********exl.c********/#include <stdio.h>void main(){int prodct(int a ,int b );int x,y,pscanf("%d,%d",&x,&y)p=prodct(x,y)printf("The product is :%d",p)}int prodct(int a ,int b ){int cc=a*breturn c}五、实验报告内容请编辑并运行上述程序。

1)静态地检查上述程序,改正程序中的错误2)在编辑状态下照原样键入上述程序.3)编译并运行上述程序,记下所给出的出错信息4)按照事先静态检查后所改正的情况,进行纠错.5)再编译执行纠错后的程序,如还有错误,再编辑改正,直到不出现语法错误为止6)下面给出6组测试用例,你认为哪几组较好,为什么(1)0, 0(2)0, 99(3)20,50(4)33000,20(5)-5,-2(6)-5,2要测试出上述程序中所有错误,你认为应当用几组测试用例六、注意事项:1、要清楚TC的安装路径。

2、记下在调试过程中所发现的错误,系统给出的出错信息和对策。

分析讨论对策成功或失败的原因。

3、总结C程序的结构和书写规则七、思考题1、有哪些方法可以进入TC编译环境?2、编写一个程序,要求输入圆的半径,计算圆的周长和面积并输出。

实验二基本输入/输出函数和运算符、表达式一、实验目的及任务:1、掌握C语言程序输入,输出的方法和格式。

2、学会有关C语言的有关运算符,以及包含这些运算符的表达式,特别是是++和- -运算符的使用。

3、掌握C语言表达式的运行规则。

4、进一步熟悉C程序的编辑环境。

二、实验环境TC或者VC++编程环境;主机操作系统为Windows2000或Windows XP;三、预备知识要深入理解输入输出函数的格式和用法,掌握运算符和表达式的概念和应用。

四、实验步骤1、输入并编辑下面的程序main(){int a,b;float c,d;long e,f;unsigned int u,v;char c1,c2;scanf("%d,%d",&a,&b);scanf("%f,%f",&c,&d);scanf("%ld,%ld",e,f);scanf("%o,%o",&u,&v);scanf("%c,%c",c1,c2);printf("\n");printf("a=%7d,b=%7d\n",a,b);printf("c=%10.2f,d=%10.2f\n",c,d);printf("e=17ld,f=%17ld\n",e,f);printf("u=%o,d=%o\n",u,v);printf("c1=%c,d=%c\n",c1,c2);(1)这个程序有语法错误吗为什么(2)调试上述程序无语法错误后,用下面的测试数据,对程序进行测试: a=123,b=456,c=17.6,d=71837.65,e=70000,f=2174506,u=62000,v=58765,c1 ='a',c2='b'分析运行结果.特别注意输入c1,c2的值是什么什么原因(3)将输入e和f的语句改为:scanf("%d,%d",&e,&f);再用上述测试数据测试并分析结果.(4)将输入u,v的语句改为:scanf("%d,%d",&u,&v);再用上述测试数据测试并分析结果.2、编写一个C语言程序,测试下列各表达式i , ji + 1, j + 1i + + , j + ++ + i, + + ji + + + + + j+ + i + + + + + j + +要求在各表达式中i 和j都分别有相同的初值.在实验中注意下列问题:(1) 哪些表达式是错误的为什么(2) 理解+,++,++i,i++的意义和优先级别.3、下面的程序试图计算由键盘输入的任意两个整数的平均值:#includemain(){int x,y,a;scanf("%x,%y,&x,&y);a=(x+y)/2;printf("The average is :"a);}调试无语法错误后,分别使用下列测试用例对上述程序进行测试:2,6;1, 3;-2,-6;-1,-3;-2,6;-1,3;1,0;1,6 ;32800,33000;-32800,33000;(1)分析上述哪几组测试用例较好,通过测试,你发现程序有什么错误了吗?若有错误,请指出错误原因。

4、输入以下程序main(){int j,k,m,n;k=8;j=10;m=k++;n=++j;printf("%d,%d,%d,%d",k,j,m,n);}(1)运行程序,观察结果(2)分析++在变量之前和在变量之后的不同点五、实验报告内容完成上述题目及思考题内容。

六、注意事项:1、注意printf和scanf的应用格式。

2、注意++和- -的使用规则。

七、思考题1、操作符sizeof用以测试一个数据或类型所占用的存储空间的字节数,请编写一个程序,测试各基本数据类型所占用的存储空间大小。

实验三顺序结构、选择结构程序设计一、实验目的及任务:1、了解条件与程序流程的关系。

2、了解C语句表示逻辑量的方法(以0代表"假"以1代表"真")。

3、学会正确使用逻辑运算符和逻辑表达式。

4、熟练掌握if语句和switch语句。

二、实验环境TC或者VC++编程环境;主机操作系统为Windows2000或Windows XP;三、预备知识要深入理解顺序结构及选择结构的特点,掌握各自的语句实现。

四、实验步骤1、有如下程序段:{if (a>1&&b= =0) x=x/a;if(a==2||x>1) x=x+1;}要求增加一些输入语句和输出语句,以便使上述程序能在不同的a,b 和x值下运行,并且能观察程序流程经过(覆盖)了哪些语句,哪些分支及哪些路径。

记下分别使用下列各组数据运行时的操作流程:(1) a=1,b=1,x=1;(2) a=1,b=1,x=2;(3) a=3,b=0,x=1;(4) a=2,b=1,x=4;(5) a=2,b=1,x=1;(6) a=1,b=0,x=2;(7) a=2,b=1,x=1;(8) a=3,b=0,x=2.2、已知三个数a,b,c,找出最大值放于max中。

分析:由已知可得在变量定义时定义四个变量a、b、c和max,a、b、c是任意输入的三个数,max是用来存放结果最大值的。

第一次比较a和b,把大数存入max中,因a,b都可能是大值,所以用if语句中if——else 形式。

第二次比较max和c,把最大数存入max中,用if语句的第一种形式if形式。

Max即为a、b、c中的最大值。

#include "stdio.h"main(){int a,b,c,max; /*定义四个整型变量*/scanf("a=%d,b=%d,c=%d",&a,&b,&c);if (a>=b)max=a; /*a>=b*/elsemax=b; /*amax)if(c>=max)max=c; /*c是最大值*/printf("max=%d",max);}实验步骤:若输入下列数据,分析程序的执行顺序并写出运行结果(1)a=1,b=2,c=3(2)a=2,b=1,c=3(3)a=3,b=2,c=1(4)a=3,b=1,c=2(5)a=3,b=3,c=2(6)a=2,b=1,c=23、输入某学生的成绩,经处理后给出学生的等级,等级分类如下:90分以上(包括90):A80至90分(包括80):B70至80分(包括70):C60至70分(包括60):D60分以下:E方法一:(用if嵌套`)分析:由题意知如果某学生成绩在90分以上,等级为A;否则,如果成绩大于80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。

因此,再用if嵌套前,应先判断输入的成绩是否在0~100之间。

#include"stdio.h"main(){int score;char grade;printf("\nplease input a student score:");scanf("%f",&score);if(score>100||score=90)grade='A';else{ if(score>=80)grade='B';else{if(score>=70)grade='C';else{ if(score>=60)grade='D';else grade='E';}}}printf("\nthe student grade:%c",grade);}输入测试数据,调试程序。

相关文档
最新文档