数据结构实验教学大纲(1)

数据结构实验教学大纲(1)
数据结构实验教学大纲(1)

《数据结构》实验教学大纲

课程总学时:64+32学分:5

实验学时:32 实验个数:实验学分: 1

课程性质:必做适用专业:计算机科学与技术、软件工程、网络工程

教材及参考书:

数据结构(C语言版),严蔚敏吴伟民,清华大学出版社,2002年9月第1版;

数据结构题集(C语言版)实习题部分,清华大学出版社;

数据结构实验教程,王玲刘芳贺春林等,四川大学出版社,2002年10月,

大纲执笔人:刘芳大纲审定人:

一、实验课的性质与任务

计算机编程中加工处理的对象是数据,而数据具有一定的组织结构,所以学习编写计算机程序仅仅了解计算机语言是不够的,还必须掌握数据组织、存储和运算的一般方法,这是数据结构课程中学习和研究的内容。由于数据结构的原理和算法较抽象,而该课程一般在本科低年级开设,对于计算机程序设计知识的初学者,理解和掌握其中的原理就显得较为困难。

《数据结构》实验课程着眼于原理和应用的结合点,使读者学会如何将书上学到的知识用于解决实际问题,培养软件工作需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。平时练习较偏重于如何编写功能单一的“小”算法,而实习题是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。此外,还有很重要的一点是:机器是比任何老师更严厉的检查者。

训练的重点在于基本的数据结构,而不是强调面面俱到。各实习单元与教科书的各章只具有粗略的对应关系,一个实习题常常涉及到几部分教学内容。

二、实验课程目的与要求

1.实验目的

根据《数据结构》课程的任务与要求,帮助学生拓宽知识面。并达到以下教学要求:

1)学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当

的逻辑结构、存储结构及其相应的算法,并初步掌握算法的时间分析和空间分

析的技术;掌握各种基本数据结构的逻辑结构和存储结构及相应算法。

2)本课程的学习过程也是复杂程序设计的训练过程,要求学生编写的程序结构清

楚、正确易读,符合软件过程的规范,从而培养学生的数据抽象能力;

3)通过若干数据结构应用实例,引导学生学习数据类型的使用,为今后学习面向

对象的程序做一些铺垫。

2.实验要求

1)熟悉各种基本数据结构的定义,性质和特点,初步掌握算法分析的基本技巧以

及如何根据实际问题设计一个有效的算法。

2)会书写类C语言的算法,并将算法转变为程序实现。

3)正确理解各种数据结构的逻辑特性和存储表示和基本操作的算法实现,有较强

的逻辑分析能力。

4)针对问题的不同选择合适的数据结构,提高算法设计的能力和动手实验的技

能。

数据结构实验课程(课程编号)

序号实

实验名称

实验类型

内容提要

1 抽象数据

类型的表

示与实现

2 √√√

抽象数据类型的表

示与实现

2 线性表实

4 √√√

线性表的存储实现

及有关应用

3 栈和队列

实验

6 √√√

栈和队列的基本操

作及其实现,以及典

型应用举例

4 稀疏矩阵

实验 4 √

稀疏矩阵的压缩存

5 树和二叉

树实验

6 √√

树的两种种存储结

构,及各种操作的算

法实现(建立、遍历、

线索化、最优二叉

树)

6 图及其应

用实验

6 √√

图的两种基本存储

结构,及各种操作的

算法实现(建立、遍

历、图的典型应用)

7 查找和排

序实验

4 √√√

各种基本的查找和

排序算法及其实现

分析

实验一抽象数据类型的表示与实现

(验证性实验 2 学时)

1.目的要求:

1)熟悉类C语言的描述方法,学会将类C语言描述的算法转换为C源程序实现;

2)理解抽象数据类型的定义,编写完整的程序实现一个抽象数据类型(如三元组)。

3)认真阅读和掌握本实验的参考程序,上机运行程序,保存和打印出程序的运行结果,

并结合程序进行分析。

2.实验内容:

1)编程实现抽象数据类型三元组的定义、存储、基本操作(最大值、最小值、平均值

等的求解),并设计一个主菜单完成各个功能的调用。

3.主要仪器设备及药品

1)PC机

2)Turbo C 2.0 或Visual C++

实验二线性表实验

(验证性实验 4 学时)

1.目的要求:

1)熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现;

2)以线性表的各种操作(建立、插入、删除等)的实现为重点;

3)通过本次实习帮助学生加深对高级语言C语言的使用(特别是函数参数、指针类型、链表的使用)。

4)认真阅读和掌握本实验的参考程序,上机运行本程序,保存和打印出程序的运行

结果,并结合程序进行分析。按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果。

3.实验内容:

1)编程实现线性表两种存储结构中的基本操作的实现(线性表的创建、插入、删除和查找),并设计一个主菜单完成各个功能的调用。

3.主要仪器设备及药品

1)PC机

2)Turbo C 2.0 或Visual C++

实验三栈、队列实验

(验证性试验6 学时)

1.目的要求:

1)掌握栈和队列这两种特殊的线性表,熟悉它们的特性,在实际问题背景下灵活运用它们。

2)本实验训练的要点是“栈”和“队列”的观点;

2.实验内容:

1)利用栈,实现任一个表达式中的语法检查(如括号的匹配)。

2)编程实现队列在两种存储结构中的基本操作(队列的初始化、判队列空、入队列、出队列);

3.主要仪器设备及药品

1)PC机

2)Turbo C 2.0 或Visual C++

实验四稀疏矩阵实验

(验证性 4 学时)

1.目的要求:

1)掌握特殊矩阵的压缩存储表示,了解稀疏矩阵的三元表顺序表示及基本操作的实

现。

2.实验内容:

1)稀疏矩阵的三元组顺序表示方法及基本操作的实现(建立、输出、转置)并实现一个主菜单来实现。

3.主要仪器设备及药品

1)PC机

2)Turbo C 2.0 或Visual C++

实验五树及二叉树实验

(验证性、应用性 6 学时)

1.目的要求:

1)树是一种重要的非线性数据结构,要求掌握二叉树的两种基本的存储结构,及各种

操作的算法实现(建立、遍历)以及应用。

2)本实验训练的要点是:递归算法的设计方法以及二叉树的应用。

2.实验内容:

1)按先序次序输入二叉树中结点的值,建立一棵以二叉链表作存储结构的二叉树,然

后按先序、中序、后序顺序分别遍历这棵二叉树。

2)编写一个求二叉树叶子结点数的算法。

3.主要仪器设备及药品

1)PC机

2)Turbo C 2.0 或Visual C++

实验六图及其应用实验

(验证性 6 学时)

1.目的要求:

1)图是一种重要的非线性数据结构,要求掌握图的两种基本的存储结构(邻接矩阵、

邻接表),以及图的基本算法实现(建立、深度优先遍历、广度优先遍历),并能运

用图结构分析解决一些实际问题。

2)本实验训练的要点是:图的两种基本存储结构,及各种操作的算法实现(建立、遍

历、图的典型应用)

2.实验内容:

1)建立无向图和有向图的邻接矩阵存储,计算顶点的度,并按要求输出图的基本信息。

2)建立有向图的邻接表存储表示,并根据存储计算顶点的出度和入度,然后按照要求

输出图的基本信息。

3.主要仪器设备及药品

1)PC机

2)Turbo C 2.0 或Visual C++

实验七查找与排序实验

(验证性、综合性实验 6 学时)

1.目的要求:

1)学生在实习中体会各种查找和内部排序算法的基本思想、适用场合,理解开发高效算

法的可能性和寻找、构造高效算法的方法。

2.实验内容:

1)实现二分查找算法,并计算相应的ASL。

2)实现插入排序或选择排序算法。

3.主要仪器设备及药品

1)PC机

2)Turbo C 2.0 或Visual C++

数据结构实验

实验2 查找算法的实现和应用?实验目的 1. 熟练掌握静态查找表的查找方法; 2. 熟练掌握动态查找表的查找方法; 3. 掌握hash表的技术. ?实验内容 1.用二分查找法对查找表进行查找; 2.建立二叉排序树并对该树进行查找; 3.确定hash函数及冲突处理方法,建立一个hash表并实现查找。 程序代码 #include using namespace std; int main() { int arraay[10]={1,2,3,4,5,6,7,8,9,10}; int binary_search(int a[10],int t); cout<<"Enter the target:"; int target; cin>>target; binary_search(arraay,target); return 0; } int binary_search(int a[10],int t) { int bottom=0,top=9; while(bottom

cout<<"Not present!"; } return 0; } 结果 二叉排序树 #include #include #include using namespace std; typedef int keyType; typedef struct Node { keyType key; struct Node* left; struct Node* right; struct Node* parent; }Node,*PNode; void inseart(PNode* root, keyType key) { PNode p = (PNode)malloc(sizeof(Node)); p -> key = key;

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

《数据结构》课程实验指导 《数据结构》实验教学大纲 课程代码:0806523006开课学期:3 开课专业:信息管理与信息系统 总学时/实验学时:64/16 总学分/实验学分:3.5/0.5 一、课程简介 数据结构是计算机各专业的重要技术基础课。在计算机科学中,数据结构不仅是一般程序设计的基础,而且是编译原理、操作系统、数据库系统及其它系统程序和大型应用程序开发的重要基础。数据结构课程主要讨论各种主要数据结构的特点、计算机内的表示方法、处理数据的算法以及对算法性能的分析。通过对本课程的系统学习使学生掌握各种数据结构的特点、存储表示、运算的原理和方法,学会从问题入手,分析研究计算机加工的数据结构的特性,以便为应用所涉及的数据选择适当的逻辑结构、存储机构及其相应的操作算法,并初步掌握时间和空间分析技术。另一方面,本课程的学习过程也是进行复杂程序设计的训练过程,通过对本课程算法设计和上机实践的训练,还应培养学生的数据抽象能力和程序设计的能力。 二、实验的地位、作用和目的 数据结构是一门实践性较强的基础课程,本课程实验主要是着眼于原理和应用的结合,通过实验,一方面能使学生学会把书上学到的知识用于解决实际问题,加强培养学生如何根据计算机所处理对象的特点来组织数据存储和编写性能好的操作算法的能力,为以后相关课程的学习和大型软件的开发打下扎实的基础。另一方面使书上的知识变活,起到深化理解和灵活掌握教学内容的目的。 三、实验方式与基本要求 实验方式是上机编写完成实验项目指定功能的程序,并调试、运行,最终得出正确结果。具体实验要求如下: 1.问题分析 充分地分析和理解问题本身,弄清要求,包括功能要求、性能要求、设计要求和约束,以及基本数据特性、数据间联系等等。 2.数据结构设计 针对要解决的问题,考虑各种可能的数据结构,并且力求从中选出最佳方案(必须连同算法实现一起考虑),确定主要的数据结构和全程变量。对引入的每种数据结构和全程变量要详细说明其功用、初值和操作的特点。 3.算法设计 算法设计分概要和详细设计。概要设计着重解决程序的模块设计问题,这包括考虑如何把被开发的问题程序自顶向下分解成若干程序模块,并决定模块的接口,即模块间的相互关系以及模块之间的信息交换问题。详细设计则要决定每个模块内部的具体算法,包括输入、处理和输出。 4.测试用例设计 准备典型测试数据和测试方案。测试数据要有代表性、敏感性。测试方案包括模块测试

数据结构实验报告

数据结构实验报告 一.题目要求 1)编程实现二叉排序树,包括生成、插入,删除; 2)对二叉排序树进行先根、中根、和后根非递归遍历; 3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么? 二.解决方案 对于前三个题目要求,我们用一个程序实现代码如下 #include #include #include #include "Stack.h"//栈的头文件,没有用上 typedefintElemType; //数据类型 typedefint Status; //返回值类型 //定义二叉树结构 typedefstructBiTNode{ ElemType data; //数据域 structBiTNode *lChild, *rChild;//左右子树域 }BiTNode, *BiTree; intInsertBST(BiTree&T,int key){//插入二叉树函数 if(T==NULL) { T = (BiTree)malloc(sizeof(BiTNode)); T->data=key; T->lChild=T->rChild=NULL; return 1; } else if(keydata){ InsertBST(T->lChild,key); } else if(key>T->data){ InsertBST(T->rChild,key); } else return 0; } BiTreeCreateBST(int a[],int n){//创建二叉树函数 BiTreebst=NULL; inti=0; while(i

数据结构实验一 实验报告

班级::学号: 实验一线性表的基本操作 一、实验目的 1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入和删除等。 二、实验容 定义一个包含学生信息(学号,,成绩)的顺序表和链表(二选一),使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据进行查找,返回此学生的学号和成绩; (4) 根据指定的位置可返回相应的学生信息(学号,,成绩); (5) 给定一个学生信息,插入到表中指定的位置; (6) 删除指定位置的学生记录; (7) 统计表中学生个数。 三、实验环境 Visual C++ 四、程序分析与实验结果 #include #include #include #include #define OK 1 #define ERROR 0 #define OVERFLOW -2

typedef int Status; // 定义函数返回值类型 typedef struct { char num[10]; // 学号 char name[20]; // double grade; // 成绩 }student; typedef student ElemType; typedef struct LNode { ElemType data; // 数据域 struct LNode *next; //指针域 }LNode,*LinkList; Status InitList(LinkList &L) // 构造空链表L { L=(struct LNode*)malloc(sizeof(struct LNode)); L->next=NULL; return OK;

数据结构课程教学大纲

《数据结构》教学大纲 课程性质专业必修课 课程名称数据结构课程编号*04069 适用专业计算机科学与技术/软件工程开课学期第3学期 总学时64 理论50 学分数 4 实践14 一、课程性质与目标 数据结构课程属于专业必修课。通过本课程数据结构的学习,学生应实现如下目标: 1.知识目标:本课程主要讲述线性表、栈、队列、字符串、数组、树、二叉树、图、查找表、内部排序等常用数据结构的基本概念、操作及其典型应用例子。通过本课程的学习,应使学生掌握数据结构的概念及不同的存储结构、掌握一些典型算法原理和方法,且能够在不同存储结构上实现编程,同时,对于算法设计的方式和技巧也有所体会。 2.能力目标 (1)独立获取知识的能力——逐步掌握科学的学习方法,不断地扩展知识面,增强独立思考的能力,更新知识结构; (2)科学观察和思维的能力——运用数据结构的基本理论,熟悉各种基本数据结构及其操作,学会根据实际问题要求来选择数据结构。 (3)分析问题和解决问题的能力——学会利用数据结构原理分析实际问题,提高发现问题与解决问题的能力。对部分优秀的学生,培养其在知名程序设计在线评测系统(如POJ等)中求解实际问题的能力。 (4)求实精神——通过数据结构理论课程教学,培养学生严谨求实的科学态度和刻苦钻研的作风。 (5)实践能力——通过学习,有意识地培养学生编写高质量、高效率程序的能力和风格。 3.素质目标:使学生具备一定的计算思维,热爱算法设计和程序实现,面对实际问题能转换为计算机能够求解的过程并选择合适的数据结构,设计出在时间和空间上具备一定高效率的程序,培养学生学习算法设计与实现的细心和耐心,培养学生坚韧不拔,攀登技术高峰的优秀品质。让部分优秀的学生热爱上湖南省大学生程序设计竞赛,体会ACM程序设计竞赛的魅力。 二、课程教学基本要求 课程前应该认真预习,特别是前导课程相关知识体系; 课中应该认真听课,参与教学过程中的互动、回答问题及联系实际编程; 课后积极做好复习、认真完成作业及课程设计相关实践教学的环节。作业应具备一定实用性的数据结构和算法实现为主,对部分优秀学生,引入一定量的知名程序设计在线评测系统(如POJ等)中与数据结构相关的题目进行编程并在线提交验证正确性与时间、空间效率。 三、教学内容与学时分配

数据结构-教学大纲

《数据结构》教学大纲 课程编号:071213A 课程类型:□通识教育必修课□通识教育选修课 □专业必修课□专业选修课 ■学科基础课 总学时:48讲课学时:32 实验(上机)学时:16 学分:3 适用对象:计算机科学与技术专业 先修课程: 程序设计基础与应用、计算机基础 一、教学目标 本课程是计算机科学与技术专业的必修课。本课程是计算机科学与技术专业的核心课程,既重视学生相关理论的系统学习,又强调培养学生发现问题、分析问题和解决问题的实践能力。《数据结构》在计算机科学中是一门综合性的专业主干课,它是介于数学、计算机硬件、计算机软件三者之间的一门核心课程,而且是操作系统、数据库系统及其它系统程序的大型应用程序设计的基础,同时又直接为从事各类计算机应用的技术人员提供了必要的基本知识和解决实际问题的多种方法。 用计算机解决任何问题都需要进行数据表示和数据处理,而数据表示和数据处理正是《数据结构》要研究的内容。《数据结构》主要介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。该课程逻辑上以线性结构、层次结构、网状结构为主线,物理上分顺序存储、链式存储,分别介绍基本数据结构的特点和算法。并重点介绍有关各种检索、排

序和文件组织的常用算法。通过上述知识的学习和能力的提高,为后续学习和实际工作打下良好的知识基础和能力基础。 目标1:通过对数据结构基本知识进行讲解,让学生理解并掌握数据的逻辑结构和物理结构,并掌握算法设计的基本思想。 目标2:培养学生分析算法复杂度的初步能力,锻炼学生逻辑思维能力和想象能力,并使之了解数据结构的各种应用场景。 目标3:鼓励学生运用算法知识解决各自学科的实际问题,培养他们的独立科研的能力和理论联系实际的能力。 二、教学内容及其与毕业要求的对应关系 (一)教学内容 1.知识体系 第一部分:数据结构的基本概念,包括数据、数据元素、数据项等基本概念、数据类型、抽象数据类型、算法的定义、算法的特性、算法的时间代价、算法的空间代价; 第二部分:线性表的逻辑结构特性,以及线性表的两种存储实现方式;顺序表的定义与实现,包括搜索、插入、删除算法的实现及其平均比较次数的计算;单链表的类定义、构造函数、单链表的插入与删除算法及其平均比较次数的计算; 第三部分:栈的定义、特性和栈的抽象数据类型,栈的顺序表示、链表表示以及相应操作的实现;队列的定义、特性和队列的抽象数据类型,队列的顺序表示、链表表示以及相应操作的实现; 第四部分:串的定义,串的表示和实现,串的操作的定义; 第五部分:数组的两种存储表示方法;矩阵的压缩存储; 第六部分:树和森林的概念。包括树的定义、树的术语、树的抽象数据类型;二叉树的概念、性质及二叉树的表示;二叉树的遍历方法;线索化二叉树的特性及寻找某结点的前驱和后继的方法;树与森林的实现,重点在用二叉树实现;森林与二叉树的转换;树的遍历算法;二叉树的计数方法及从二叉树遍历结果得到

数据结构实验报告

姓名: 学号: 班级: 2010年12月15日

实验一线性表的应用 【实验目的】 1、熟练掌握线性表的基本操作在顺序存储和链式存储上的实现。、; 2、以线性表的各种操作(建立、插入、删除、遍历等)的实现为重点; 3、掌握线性表的动态分配顺序存储结构的定义和基本操作的实现; 4、通过本章实验帮助学生加深对C语言的使用(特别是函数的参数调用、指针类型的 应用和链表的建立等各种基本操作)。 【实验内容】 约瑟夫问题的实现:n只猴子要选猴王,所有的猴子按1,2,…,n编号围坐一圈,从第一号开始按1,2…,m报数,凡报到m号的猴子退出圈外,如此次循环报数,知道圈内剩下一只猴子时,这个猴子就是猴王。编写一个程序实现上述过程,n和m由键盘输入。【实验要求】 1、要求用顺序表和链表分别实现约瑟夫问题。 2、独立完成,严禁抄袭。 3、上的实验报告有如下部分组成: ①实验名称 ②实验目的 ③实验内容:问题描述:数据描述:算法描述:程序清单:测试数据 算法: #include #include typedef struct LPeople { int num; struct LPeople *next; }peo; void Joseph(int n,int m) //用循环链表实现 { int i,j; peo *p,*q,*head; head=p=q=(peo *)malloc(sizeof(peo)); p->num=0;p->next=head; for(i=1;inum=i;q->next=p;p->next=head; } q=p;p=p->next; i=0;j=1; while(i

数据结构实验

长春大学计算机学院网络工程专业 数据结构实验报告 实验名称:实验二栈和队列的操作与应用 班级:网络14406 姓名:李奎学号:041440624 实验地点:日期: 一、实验目的: 1.熟练掌握栈和队列的特点。 2.掌握栈的定义和基本操作,熟练掌握顺序栈的操作及应用。 3.掌握链队的入队和出队等基本操作。 4.加深对栈结构和队列结构的理解,逐步培养解决实际问题的编程能力。 二、实验内容、要求和环境: 注:将完成的实验报告重命名为:班级+学号+姓名+(实验二),(如:041340538张三(实验二)),发邮件到:ccujsjzl@https://www.360docs.net/doc/b91074542.html,。提交时限:本次实验后24小时之内。 阅读程序,完成填空,并上机运行调试。 1、顺序栈,对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数 (1)文件SqStackDef. h 中实现了栈的顺序存储表示 #define STACK_INIT_SIZE 10 /* 存储空间初始分配量*/ #define STACKINCREMENT 2 /* 存储空间分配增量*/ typedef struct SqStack { SElemType *base; /* 在栈构造之前和销毁之后,base 的值为NULL */ SElemType *top; /* 栈顶指针*/ int stacksize; /* 当前已分配的存储空间,以元素为单位*/ }SqStack; /* 顺序栈*/ (2)文件SqStackAlgo.h 中实现顺序栈的基本操作(存储结构由SqStackDef.h 定义) Status InitStack(SqStack &S) { /* 构造一个空栈S */ S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!S.base) exit(OVERFLOW); /* 存储分配失败*/ S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; } int StackLength(SqStack S) { // 返回S 的元素个数,即栈的长度, 编写此函数

数据结构教学大纲(完整资料).doc

【最新整理,下载后即可编辑】 XX师范学院大学本科专业教学大纲中文课程名称:数据结构 英文课程名称:Data Structures 适用专业:信息管理与信息系统 制定单位:商学院 执笔人: 审核人: 单位负责人: 制定时间:2017-2-10 XX师范学院教务处

二〇一七年一月

《数据结构》课程教学大纲 一、课程基本信息 (一)课程代码及课程名称 1.课程代码:06151090 2.课程名称(中/英文):数据结构/Data Structures (二)课程类别及课程性质 专业教育必修课程 (三)学时及学分: 总学时数:64;总学分数:3。 其中,讲授学时:32 ,实践(实验)学时:32。 (四)适用专业及开设学期 适用专业:信息管理与信息系统(本科) 开设学期:第二学期 (五)先修课程与后续课程 先修课程:大学计算机基础、高等数学、C语言程序设计 后续课程:数据库原理与应用、管理信息系统分析与设计、管理信息系统、Java程序设计(高级) 二、课程简介 “数据结构”是信息管理与信息系统专业一门重点专业基础

课程,也是学科专业核心专业基础课程之一,属于专业学位必修课程。本课程的教学任务是针对大量的信息处理对象,介绍对象信息与数据表示的各种抽象的、基本的逻辑结构及其上的基本运算操作。通过研究各种基本数据结构内在的逻辑关系和它们在计算机中的存储表示方式,初步建立数据结构上基本运算操作的正确性概念,同时,结合各种典型问题讨论其上的各种基本运算操作及其基本算法,讲授各种数据结构的特点、适用范围,以及对一些基本算法效率的定性和定量分析方法,为后续课程提供必要的数据结构基础。此外,配合实验课程的教学中,学生应理论联系实际,理论指导实践,通过规范地完成一系列数据结构实验进一步巩固所学的相关书本知识,在知识、能力、素质上得到进一步的提高。 三、教学目的与基本要求 (一)该课程教学目的与专业培养要求对应关系矩阵

数据结构实验1

《数据结构》实验报告 实验序号:1 实验项目名称:概论

附源程序清单: 1. #include void main() { int i; int num[10]; int *p; for(i=0;i<=9;i++) num[i]=i+1; for(p=(num+9);p>=(num+0);p--) printf("%d ",*p); printf("\n"); }

2. #include void main() { void swap(int *a,int *b); int i; int a[10]; int *p,*max,*min; for(i=0;i<10;i++) scanf("%d",&a[i]); max=min=a; for(i=0;i<10;i++) { if(*maxa[i]) min=&a[i]; } p=a; swap(p,max); swap((p+9),min); for(p=a;p<=(a+9);p++) printf("%d ",*p); printf("\n"); } void swap(int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; } 3. #include #include #include #include typedef struct { char num[5]; char name[20]; float score1; float score2; float score3; float average;

数据结构 教学大纲

《数据结构》课程教学大纲 课程代码:090131110 课程英文名称:Data structure 课程总学时:48 讲课:40 实验(上机):8 适用专业:信息与计算科学专业 大纲编写(修订)时间:2017.11 一、大纲使用说明 (一)课程的地位及教学目标 本课程是信息与计算科学专业的一门重要的专业基础课,它较详细地阐述了使用计算机解 决具体问题时所建立的数学模型的逻辑结构与存储结构的多种类型以及对数据具体进行操作的算法实现。通过本课程的学习,使学生了解和掌握使用高级语言编程时组织数据的基本理论和方法,是学生进一步学习计算机方面相关专业课程的必备基础。 (二)知识、能力及技能方面的基本要求 1.基本知识:掌握时间效率和空间效率的概念,掌握数据结构中的线性表、树、图等基本结构。 2.基本理论和方法:掌握线性表的基本操作,栈、队列、串、数组的基本操作,树的应用方法,图的应用方法及数据的查找、排序操作等。 3.基本技能:学生应该能够使用高级语言正确定义数据的逻辑结构和选择有效的存储结构 解决具体问题,其算法实现应注重时间效率和空间效率。数据对象查找与排序操作等较常用基本操作,学生应掌握算法学会合理使用。 (三)实施说明 1.教学方法:课堂讲授中要重点对基本概念、基本方法和解题思路的讲解;采用启发式教学,培养学生思考问题、分析问题和解决问题的能力;引导和鼓励学生通过实践和自学获取知识,培养学生的自学能力;增加讨论课,调动学生学习的主观能动性;注意培养学生提高利用标准、规范及手册等技术资料的能力。讲课要联系实际并注重培养学生的创新能力。 2.教学手段:在教学中采用电子教案及多媒体教学系统等先进教学手段,以确保在有限的学时内,全面、高质量地完成课程教学任务。 (四)对先修课的要求 要求学生有高级语言的基础知识与编程经验,应该学习过C语言程序设计等课程。 (五)对习题课、实验环节的要求 1.对习题课的要求 学习完每部分内容,都要做相关的练习题,加深对课堂所学知识的理解,检验学生对所学内容的掌握程度,引导学生对所讲例题举一反三,从而达到熟练编程的能力。 2.对实验环节的要求 上机实践环节在理论课后一周左右进行。通过上机调试运行自编程序,熟练掌握程序设计、调试程序的方法。 3. 本课程的课程设计单独设课,单独考核,具体要求参见相应的课程设计教学大纲。 (六)课程考核方式 1.考核方式:考试 2.考核目标:在考核学生对数据结构基本知识、基本方法的基础上,重点考核学生的分析能力及算法设计能力。

数据结构 _实验1

《数据结构》实验报告 班级:网络1311 学号:10 姓名:曾梦成绩: 实验1:指针和结构体程序设计 1.实验目的 (1)复习C(或C++)语言的基本描述方法。 (2)熟练掌握数组的用法。 (3)提高运用C(或C++)语言解决实际问题的能力。 2.实验内容 设一个班有10个学生,每个学生有学号,以及数学、物理、英语、语文、体育5门课的成绩信息。分别写3个函数以实现以下3个要求: (1)求数学的平均成绩。 (2)对于有两门以上课程不及格的学生,输出他们的学号、各门课成绩及平均成绩。 (3)输出成绩优良的学生(平均成绩在85分以上或全部成绩在80分以上)的学号、各门课成绩和平均成绩。 3.实验要求 (1)利用C(或C++)语言完成程序设计。 (2)上机调试通过实验程序。 (3)输出10个学生的学号和数学、物理、英语、语文、体育5门课的成绩,检验程序运行的正确性。 (4)总结整个程序的组成和设计思想。 (5)撰写实验报告(把输入数据及运行结果用抓图的形式粘贴到实验报告上)。 4.实验程序 #include struct STUDENT { char id[10]; int score[5]; double ave; }stu[10]; void main() { int i,j,math=0,m=0,n=0,k,Tave,num=10; double mave;

printf("成绩输入按照数学物理英语语文体育的顺序"); for(i=0;i

《数据结构》实验教学大纲

《数据结构》实验教学大纲 课程代码: B03203 课程名称:数据结构 英文名称: Data Structures 课程总学时: 60 (其中理论课 46 学时,实验 14 学 时)学分: 2.5 课程类别:必修课程性质:专业基础课 先修课程:计算机导论、Java语言程序设计 面向专业:软件技术、计算机网络技术 开课单位:软件工程系 一、实验教学的性质地位和任务 数据结构实验课是计算机类专业的一门专业基础实验课,是后续专业课程的基础;该课程的主要任务是:进一步掌握和拓展所学的理论知识,初步掌握解决问题的基本结构以及建立在该结构上的算法,培养学生的综合能力;本课程主要内容包括:线性表及其应用实验,串及其应用实验,树及其应用实验,图及其应用实验,查找实验,内部排序实验;通过本实验课的学习,学生应学会分析研究计算机加工的数据结构的特性,培养数据抽象的能力,训练学生进行复杂程序设计的技能,培养良好程序设计的习惯,初步掌握算法的时间分析和空间分析的技术。 二、实验内容与要求 项目一、线性表及其应用

(1)实验目标 1.加深理解线性表的顺序表示与链式表示的意义和区别,理解不同存储结构下插入与删除操作的算法; 2.熟练掌握线性表的顺序存储方式及其插入、删除等基本操作的算法实现; 3.熟练掌握线性表的链式存储方式及其插入、删除等基本操作的算法实现; (2)具体内容 1.设计一组输入数据并编写主程序分别调用上述算法(顺序表示的算法为InitList_Sq、ListInsert_Sq、ListDelete_Sq等,链式表示的算法为 InitList_L、ListInsert_L、ListDelete_L等),调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解; 2.设计一个可以容纳40位数的求n!的程序。 (3)主要仪器设备与工具 PC机一台/每人。 项目二、栈及其应用 (1)实验目标 1.理解栈的概念; 2.掌握利用数组实现栈的基本操作; 3.应用栈结构来解决表达式求值的问题。

数据结构实验一 实验报告

班级: 姓名: 学号: 实验一线性表的基本操作 一、实验目的 1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入与删除等。 二、实验内容 定义一个包含学生信息(学号,姓名,成绩)的顺序表与链表(二选一),使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生的学号与成绩; (4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5) 给定一个学生信息,插入到表中指定的位置; (6) 删除指定位置的学生记录; (7) 统计表中学生个数。 三、实验环境 Visual C++ 四、程序分析与实验结果 #include #include #include #include #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; // 定义函数返回值类型 typedef struct

{ char num[10]; // 学号 char name[20]; // 姓名 double grade; // 成绩 }student; typedef student ElemType; typedef struct LNode { ElemType data; // 数据域 struct LNode *next; //指针域 }LNode,*LinkList; Status InitList(LinkList &L) // 构造空链表L { L=(struct LNode*)malloc(sizeof(struct LNode)); L->next=NULL; return OK; } Status GetElem(LinkList L,int i,ElemType &e) // 访问链表,找到i位置的数据域,返回给 e { LinkList p; p=L->next;

《数据结构》实验教学大纲

数据结构实验教学大纲 课程代码:10515010 课程名称:数据结构 实验学时:16学时实验学分:1学分 适应专业:软件工程 执笔人:编写日期:2007年7月 一、实验课程的目的与任务 《数据结构》是计算机程序设计的重要理论基础,是一门实践性较强的专业基础课。上机实验使学生巩固和运用所学知识解决具体问题,以达到理论联系实际的目的。同时提高程序设计和上机操作的实际能力,为后续课程的学习打下良好的基础。 二、实验教学基本要求 1、熟练掌握C语言的编辑、编译、调试程序。 2、会书写类C语言的算法,并将算法转变为程序实现。 3、正确理解各种数据结构的逻辑特性和存储表示和基本操作的算法实现。 4、掌握算法的时间分析和空间分析的技术; 5、针对问题的特点选择合适的数据结构,设计实用高效的算法,提高算法设计的能力和动手实验的技能。 三、实验项目与内容提要

四、考核方式及成绩评定方法 1、本课程考核方式: 根据学生的实验预习、实验纪律、实验动手能力、实验报告结果及编程技巧,进行综合评定,给出A(90)、B(80)、C(70)、D(60)、E(不及格)。 2、成绩评定方法: 实验考勤及课堂表现占30%,实验报告占70%。 五、实验仪器设备配置 硬件要求:P4以上微机。 软件配置:TC2.0等 六、实验教材(指导书)及参考书 [1]严蔚敏等.《数据结构题集》.2005.清华大学出版社 [2]严蔚敏等.《数据结构》(C语言版).2003.清华大学出版社 [3]刘大有等.《数据结构》(C语言版).2004.高等教育出版社 [4]William Ford,William Topp.《Data Structure with C++》.2003.清华大学出版社

数据结构实验报告及心得体会

2011~2012第一学期数据结构实验报告 班级:信管一班 学号:201051018 姓名:史孟晨

实验报告题目及要求 一、实验题目 设某班级有M(6)名学生,本学期共开设N(3)门课程,要求实现并修改如下程序(算法)。 1. 输入学生的学号、姓名和 N 门课程的成绩(输入提示和输出显示使用汉字系统), 输出实验结果。(15分) 2. 计算每个学生本学期 N 门课程的总分,输出总分和N门课程成绩排在前 3 名学 生的学号、姓名和成绩。 3. 按学生总分和 N 门课程成绩关键字升序排列名次,总分相同者同名次。 二、实验要求 1.修改算法。将奇偶排序算法升序改为降序。(15分) 2.用选择排序、冒泡排序、插入排序分别替换奇偶排序算法,并将升序算法修改为降序算法;。(45分)) 3.编译、链接以上算法,按要求写出实验报告(25)。 4. 修改后算法的所有语句必须加下划线,没做修改语句保持按原样不动。 5.用A4纸打印输出实验报告。 三、实验报告说明 实验数据可自定义,每种排序算法数据要求均不重复。 (1) 实验题目:《N门课程学生成绩名次排序算法实现》; (2) 实验目的:掌握各种排序算法的基本思想、实验方法和验证算法的准确性; (3) 实验要求:对算法进行上机编译、链接、运行; (4) 实验环境(Windows XP-sp3,Visual c++); (5) 实验算法(给出四种排序算法修改后的全部清单); (6) 实验结果(四种排序算法模拟运行后的实验结果); (7) 实验体会(文字说明本实验成功或不足之处)。

三、实验源程序(算法) Score.c #include "stdio.h" #include "string.h" #define M 6 #define N 3 struct student { char name[10]; int number; int score[N+1]; /*score[N]为总分,score[0]-score[2]为学科成绩*/ }stu[M]; void changesort(struct student a[],int n,int j) {int flag=1,i; struct student temp; while(flag) { flag=0; for(i=1;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1; } for(i=0;ia[i+1].score[j]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; flag=1;

数据结构实验1

天津科技大学 2015—2016学年第2学期数据结构实验任务书 课程名称:数据结构实验学时: 2 实验题目:线性表的基本操作 实验环境: Visual C++ 实验目的: 1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入和删除等。 实验内容: 定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表(二选一),使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生的学号和成绩; (4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5) 给定一个学生信息,插入到表中指定的位置; (6) 删除指定位置的学生记录; (7) 统计表中学生个数。 实验提示: 学生信息的定义: typedef struct { char no[8]; //8位学号 char name[20]; //姓名 int score; //成绩 }Student; 顺序表的定义 typedef struct { Student *elem; //指向数据元素的基地址 int length; //线性表的当前长度 }SqList; 链表的定义:

typedef struct LNode{ Student data; //数据域 struct LNode *next; //指针域 }LNode,*LinkList; 实验要求: (1) 程序要添加适当的注释,程序的书写要采用缩进格式。 (2) 程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。 (3) 程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。 (4) 根据实验报告模板详细书写实验报告,在实验报告中给出链表根据姓名进行查找的算法和插入算法的流程图。 (5) 以班为单位实验周周五上传源程序和实验报告。顺序表的源程序保存为SqList.cpp,链表的源程序保存为LinkList.cpp,实验报告命名为:实验报告1.doc。源程序和实验报告压缩为一个文件(如果定义了头文件则一起压缩),按以下方式命名:学号姓名.rar,如07081211薛力.rar。

数据结构教学大纲

《数据结构》课程教学大纲 课程代码:030731022 课程英文名称:Data Structures 课程总学时:40 讲课:40 实验:0 上机:0 适用专业:电子信息科学与技术专业 大纲编写(修订)时间:2017.5 一、大纲使用说明 (一)课程的地位及教学目标 数据结构是电子信息科学与技术专业的一门专业基础必修课,是主干课。课程主要讨论现实世界中数据的各种逻辑结构、在计算机中的存储结构以及各种算法的设计问题。通过本课程的学习,使学生掌握组织数据、存储数据以及处理数据的基本概念和软件设计的基本方法,培养学生程序设计能力,提高程序设计兴趣,为后续专业课的学习打下坚实的基础。 (二)知识、能力及技能方面的基本要求 通过本课程的学习,在基础方面,要求学生掌握常用数据结构的基本概念及其不同的实现方法;在技能方面,能够在不同存储结构上实现不同的运算,对不同的问题选择不同的数据结构,并对算法设计的方式和技巧有所体会,学生应用此能力能完成将一个具体的问题进行抽象地表示的任务。 (三)实施说明 本课程主要包括基于不同数据结构的“算法思想设计”和“编程实现”两部分,要求学生理论和实际相结合,不仅要学会较为复杂的数据结构的设计,而且要求在计算机上编程实现。教学中首先要使学生理解不同数据结构的逻辑关系,通过较多的实例说明它们的作用和应用背景,再通过大量的编程练习,使学生掌握数据结构和算法的设计和实现,进一步提高程序设计的能力。 (四)对先修课的要求 本课程的教学必须在完成先修课程之后进行。本课程主要的先修课程是C语言程序设计。 (五)对习题课、实践环节的要求 1.对重点、难点章节(如:算法分析、线性表的应用、栈和队列的应用、树的应用、图的应用、排序的应用等)应安排习题课,习题课重点在于引导学生牢固掌握基本数据结构及其实现,并利用数据结构的知识解决常见实际问题,故采取精讲多练,用以解决实际问题为目的。 2.课后布置适量的作业,适时反馈作业问题。学生必须独立、按时完成课外习题和作业,作业的完成情况应作为评定课程成绩的一部分。 3.每个学生要完成大纲中规定的必修实验,通过实验环节,使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、物理结构和操作实现算法,培养学生进行模块化软件设计的能力。实验成绩作为评定课程成绩的一部分。 4.本课程的课程设计单独设课,单独考核,具体要求参见相应的课程设计教学大纲。 (六)课程考核方式 1.考核方式:考试 2.考核目标:在考核学生对数据结构基本概念和实现方法的基础上,重点考核学生的算法设计和分析能力。 3.成绩构成:本课程的总成绩主要由四部分组成:平时成绩(包括作业情况、出勤情况等)占10%~20%,实践能力(结合《数据结构与算法实践》课程的最终成绩,以及依据平时学生完成算法设计与实现作业的实际情况给分)占10%,期中考试成绩(依据实际授课情况而定)占0~10%,

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 6.0上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>//头文件 #include//库头文件-----动态分配内存空间 typedef int elemtype;//定义数据域的类型 typedef struct linknode//定义结点类型 { elemtype data;//定义数据域 struct linknode *next;//定义结点指针 }nodetype; 2)创建单链表

nodetype *create()//建立单链表,由用户输入各结点data域之值,//以0表示输入结束 { elemtype d;//定义数据元素d nodetype *h=NULL,*s,*t;//定义结点指针 int i=1; cout<<"建立一个单链表"<> d; if(d==0) break;//以0表示输入结束 if(i==1)//建立第一个结点 { h=(nodetype*)malloc(sizeof(nodetype));//表示指针h h->data=d;h->next=NULL;t=h;//h是头指针 } else//建立其余结点 { s=(nodetype*) malloc(sizeof(nodetype)); s->data=d;s->next=NULL;t->next=s; t=s;//t始终指向生成的单链表的最后一个节点

相关文档
最新文档