数据结构-教学大纲
数据结构-教学大纲
![数据结构-教学大纲](https://img.taocdn.com/s3/m/02ed8b38f111f18583d05a66.png)
《数据结构》教学大纲一、基本信息二、教学目标及任务本课程作为计算机专业重要的主干课程,它要求学生学会分析和研究需解决的问题中的数据的特性,为其选择合适的数据结构来描述,在此数据结构的基础上写出相应的算法,并初步掌握算法的时间复杂度和空间复杂度的分析技术。
三、学时分配教学课时分配四、教学内容及教学要求第一章数据结构绪论(共4学时)基本内容:1)数据结构的概念2)数据的逻辑结构和存储结构3)算法教学要求:熟悉数据结构中各名词、术语的含义,掌握其基本概念;理解数据类型和抽象数据类型的含义;理解算法五个要素的确切含义,注意算法与程序的区别;掌握计算语句频度和估算算法时间复杂度的方法。
第二章线性表(共6学时)基本内容:1)线性表的概念及运算2)线性表的顺序存储结构—顺序表3)线性表的链式存储结构—链表教学要求:了解线性表的逻辑结构特性是数据元素之间存在着线性关系,在计算机中表示这种关系的两类不同的存储结构是顺序存储结构和链式存储结构;熟练掌握这两类存储结构的描述方法,以及线性表的各种基本操作的实现;能够从时间和空间复杂度的角度综合比较线性表两种存储结构的不同特点及其适用场合;掌握用线性表来表示一元多项式的方法及相应操作的实现。
第三章栈和队列(共4学时)基本内容:1)栈2)队列教学要求:掌握栈和队列类型的特点,并能在相应的应用问题中正确选用它们;熟练掌握栈类型的两种实现方法,特别应注意栈满和栈空的条件以及它们的描述方法;熟练掌握循环队列和链队列的基本操作实现算法,特别注意队满和队空的描述方法;理解递归算法执行过程中栈的状态变化过程。
第四章数组和矩阵(共4学时)基本内容:1)数组2)特殊矩阵教学要求:了解数组的两种存储表示方法,并掌握数组在以行为主的存储结构中的地址计算方法;掌握对特殊矩阵进行压缩存储时的下标变换公式;了解稀疏矩阵的三类压缩存储方法的特点和适用范围,领会以三元组表示稀疏矩阵时进行矩阵运算采用的处理方法;了解广义表的结构特点及其存储表示方法。
数据结构教学大纲
![数据结构教学大纲](https://img.taocdn.com/s3/m/f6cb544e3169a4517723a3ff.png)
《数据结构》教学大纲一.教学目的和要求数据结构是介于数学、计算机硬件和计算机软件之间的一门计算机科学与技术专业的核心课程,是高级程序设计语言、编译原理、操作系统、数据库、人工智能等课程的基础。
同时,数据结构技术也广泛应用于信息科学、系统工程、应用数学以及各种工程技术领域。
数据结构课程集中讨论软件开发过程中的设计阶段、同时设计编码和分析阶段的若干基本问题。
此外,为了构造出好的数据结构及其实现,还需考虑数据结构及其实现的评价与选择。
因此,数据结构的内容包括抽象、实现和评价三个层次,从数据表示和数据处理上看有五个基本组成“要素”分别是逻辑结构,存储结构、基本运算、算法及不同数据结构的比较与算法分析。
通过学习,使学生初步具备分析问题、解决问题的能力,养成良好的程序设计风格,积聚和提高基本的分析设计能力。
为后续课程的学习打下坚实的基础。
教学要求:1.掌握各种数据结构的特点及实现方法和适用范围2.培养学生阅读、分析和设计算法的能力3.进行必要的分析设计基本技能训练4.掌握常规设计方法和技巧二.授课学时和学分授课时数:72,实验课:18学时,学分:4教学方式:课堂教学与上机实习相结合三.授课对象计算机科学与技术专业、计算机教育专业、通信工程专业二年级下学期四.先修课程高级程序设计语言五.教学内容第1章概述1.1 抽象数据类型1.2 C++类和抽象数据类型1.3 C++应用中的对象1.4 对象设计1.5 类继承的应用1.6 面向对象程序设计1.7 程序测试与维护1.8 C++程序设计语言1.9 抽象基类及多态性第2章基本数据类型2.1 整型2.2 字符类型2.3 实数类型2.4 枚举类型2.5 指针2.6 数组类型2.7 文本串及变量2.8 记录2.9 文件2.10 数组和记录的应用第3章抽象数据类型和类3.1 用户类型类3.2 类的举例3.3 对象和信息传递3.4 对象数组3.5 多构造函数3.6 应用举例:三角矩阵第4章群体类4.1 线性群体4.2 非线性群体4.3 算法分析4.4 顺序查找与折半查找4.5 基本的顺序表类第5章栈和队列5.1 栈5.2 类Stack5.3 表达式求值5.4 队列5.5 类Queue5.6 优先级队列5.7 实例研究:事件驱动模拟第6章抽象操作6.1 运算符重载6.2 有理数6.3 有理数类6.4 作为成员函数的有理数运算6.5 作为友元函数的有理数流运算符6.6 有理数转换6.7 有理数的使用第7章形式数据类型7.1 模板函数7.2 模板类7.3 表的模板类7.4 中缀表达式求值第8章类和动态存储8.1 指针与动态数据结构8.2 动态申请对象8.3 赋值与初始化8.4 安全数组8.5 串类8.6 模式匹配8.7 整型集合第9章链表9.1 结点类9.2 构造链表9.3 设计链表类9.4 类LinkedList9.5 LinkedList类的实现9.6 用链表实现集合9.7 实例研究:打印缓冲池9.8 循环表9.9 双向链表9.10 实例研究:窗口管理第10章递归10.1 递归的概念10.2 设计递归函数10.3 递归代码和运行时堆栈10.4 用递归进行间题求解10.5 递归评估第11章树11.1 二叉树结构11.2 设计TreeNode函数11.3 树扫描算法的使用11.4 二叉搜索树11.5 二叉搜索树的使用11.6 BinSTree的实现11.7 实例研究:索引(Concordance)第12章继承和抽象类12.1 继承概述12.2 C++中的继承12.3 多态性和虚函数12.4 抽象基类12.5 迭代算子12.6 有序表12.7 异构表第13章高级非线性结构13.1 基于数组的二叉树13.2 堆13.3 Heap类的实现13.4 优先级队列13.5 A VL树13.6 A VL树类13.7 树迭代算子13.8 图13.9 Graph类第14章群体数据的组织14.1 数组排序的基本算法14.2 快速排序(QuickSort)14.3 哈希法(Hashing)14.4 哈希表类14.5 搜索方法的性能14.6 二进制文件和外部数据操作14.7 辞典教材:《DATA STRUCTURES WITH C++》WILLIAM FORD PRINTICE HALL WILLIAM TOPP清华大学出版社教学参考书:1.《数据结构》许卓群高等教育出版社2.《数据结构》严蔚敏清华大学出版社(C语言版)3.《数据结构C++实现》殷人昆清华大学出版社八.考核方式必修课:考试九.上机实习及内容教材后面除了有大量的习题外,还有相当数量的上机题,原则上要求学生全部编程上机调试,作为课程考核内容的一部分,每学期精选3~5个综合性的上机题,要求完成上机调试、获取实验结果、写出实习报告。
数据结构教学大纲
![数据结构教学大纲](https://img.taocdn.com/s3/m/77d26393daef5ef7ba0d3c24.png)
《数据结构》课程教学大纲一、课程基本概况课程名称:数据结构课程名称(英文):Data Structure课程编号:课程总学时:64(理论课50 ,实验课14 )课程学分:4课程分类:必修开设学期:第5学期适用专业:计算机网络工程先修课程:《集合论》、《图论》和《高级语言(结构或记录,指针)》。
后续课程:《数据库》、《编译原理》、《操作系统》等二、课程性质、目的和任务本课程系统地介绍线性表、栈、队列、字符串、数组、广义表、树、二叉树、图、查找表等几种数据结构的基本概念、操作及其典型应用的例子,通过课堂教学、课外练习和上机实习,使学生了解数据对象的特性,数据组织的基本方法,并初步具备分析和解决现实世界问题在计算机中如何表示和处理的能力以及培养良好的程序设计技能,为后续课程的学习和科研工作的参与打下良好的基础。
三、主要内容、重点及难点(一)理论部分第一章绪论基本要求:掌握相关的基本概念,算法五大要素,计算语句频度和估算算法时间复杂度的方法。
知识点:1.数据结构的基本概念2. 算法设计3.时间和空间复杂度第二章线性表基本要求:掌握线性表的逻辑结构,线性表的存储结构,线性表在顺序结构和链式结构上实现基本操作的方法,从时间和空间复杂度的角度比较线性表两种存储结构的不同特点及其适用场合。
知识点:1.线性表的逻辑结构2.线性表的存储结构及操作的实现3.一元多项式的表示4.习题讨论课第三章栈和队列基本要求:掌握栈和队列的特点,在两种存储结构上栈的基本操作的实现;熟练掌握循环队列和链队列的基本运算,掌握递归算法执行过程中栈状态的变化过程。
知识点:1.栈的定义、表示及实现2.表达式求值3.栈与递归过程4.队列的定义、表示及实现5.习题讨论课第四章串基本要求:掌握串的七种基本运算的定义,利用这些基本运算来实现串的其它各种运算的方法;掌握在顺序存储结构上实现串的各种操作的方法,KMP算法,熟悉NEXT函数和改进NEXT函数的定义和计算;理解串名的存储映象和在堆存储结构实现串操作的方法。
数据结构课程教学大纲
![数据结构课程教学大纲](https://img.taocdn.com/s3/m/26bb37be76eeaeaad1f330b1.png)
课程
编号
01025016
01825064
01826064
课程
名称
(中文)数据结构
(英文)Data Structures
课
程
基
本
情
况
1.学分:4学时:40(课内学时:40实验学时:)
2.课程性质:学科基础必修课专业选修课
3.适算机原理》、《C语言程序设计》、《高等数学》
1.掌握线性表的基本概念。
2.掌握线性表的顺序存储结构和链式存储结构。
3.掌握特殊的线性表-栈和队列。
4.了解循环线性链表和双向链表。
(三)串(4学时)
1.了解串的基本概念和存储结构
2.了解串的基本运算
3.掌握串的模式匹配
(四)数组和广义表(4学时)
1.掌握数组顺序存储和链式存储结构
2.了解广义表的定义及其应用
配套
实践
环节
说明
大纲
编写
责任
人
信息与计算科学
(教研组)
戴筠(签名)
2001年06月30日
系
审核
意见
数学
(系)
顾桂定(签名)
2001年06月30日
学院
审核
意见
张金仓
(签名)
上海大学理学院(公章)
年月日
要求学生能够掌握数据的逻辑结构、物理结构以及各种结构所定义的运算和应用。对同一种逻辑结构的数据,讨论其不同的物理结构和相应的有关算法,掌握查找和排序的各种方法。
课
程
内
容
及
学
时
分
配
课
程
内
容
及
学
《数据结构》课程教学大纲
![《数据结构》课程教学大纲](https://img.taocdn.com/s3/m/a434f16ca45177232f60a220.png)
《数据结构》课程教学大纲课程编号:0806302024课程名称:数据结构英文名称:Data Structure课程类型:专业基础必修课总学时:72 讲课学时:56 上机学时:16学时:72学分:4.5适用对象:计算机科学与技术专业本科生先修课程:计算机导论、C/C++程序设计I、C/C++程序设计II、离散数学一、课程性质、目的和任务数据结构是计算机学科各专业本科学生必修的一门专业基础课,是计算机程序设计的重要理论和实践基础,是培养学生软件设计能力的一门重要课程,在计算机学科的本科教学中,起着非常重要的作用。
本课程研究计算机系统中常用的线性表、二叉树、图等典型数据结构的设计方法,研究各种典型排序和查找算法的设计方法和性能指标,并介绍这些数据结构和算法在实际工程中的应用。
通过学习本课程,使学生深入理解软件设计的基本要素和基本结构,培养逻辑思维能力,提高程序设计能力。
数据结构课程是一门理论和实践相结合的课程,上机实验、课程设计等实践性环节必不可少。
二、教学基本要求本课程是理论与实践并重的课程,要求学生既要掌握数据结构的基础理论知识,又要掌握操作计算机和运行、调试程序的基本技能;能够熟练运用C/C++语言或其它计算机语言编制具有中等难度的应用程序,在实践中培养独立分析问题和解决问题的作风和能力。
本课程的基本要求如下。
理解线性表、栈、队列、串、数组、树、二叉树、图等基本的数据逻辑结构,掌握描述这些数据结构、选择合适的存储结构和实现各种操作的方法。
熟练运用C/C++语言或其它计算机语言表达链式存储结构;熟练运用递归函数表达递归定义、递归算法和递归结构。
理解插入、交换、选择、归并等多种典型排序算法的思想,掌握在线性表、树等各种不同数据结构中的查找算法。
掌握在计算机语言环境中编辑、编译、运行程序的方法,以及单步运行、设置断点、查看变量运行时值等调试程序的方法。
三、教学内容及要求1.绪论①了解数据结构的基本概念,了解数据的逻辑结构、数据的存储结构和对数据的操作,了解抽象数据类型与数据结构的关系。
《数据结构》课程教学大纲
![《数据结构》课程教学大纲](https://img.taocdn.com/s3/m/1f6c19337dd184254b35eefdc8d376eeaeaa17e9.png)
《数据结构》课程教学大纲一、课程概述数据结构是计算机科学与技术专业的重要基础课程之一。
本课程旨在介绍数据结构的基本概念、常用数据结构及其应用。
通过本课程的学习,学生应具备设计和实现基本数据结构的能力,能够分析并解决实际问题中的数据组织与处理需求。
二、教学目标1. 掌握数据结构的基本概念和分类。
2. 理解不同数据结构的特点、存储结构和操作方式。
3. 能够应用各类数据结构解决实际问题,并分析其性能。
4. 具备编写高质量代码的能力,考虑代码的可读性和可维护性。
5. 培养团队合作意识和解决问题的能力。
三、教学内容1. 数据结构基础1.1 数据结构的定义和作用1.2 数据结构的分类及常用术语1.3 数据结构的表示与实现方式2. 线性结构2.1 线性结构的概念和特点2.2 线性表的顺序存储结构和链式存储结构2.3 线性表的基本操作(插入、删除、查找)2.4 栈和队列的定义、基本操作以及应用3. 非线性结构3.1 树形结构的概念和特点3.2 二叉树及其存储结构(顺序存储和链式存储)3.3 二叉树的遍历(先序、中序、后序)3.4 树与森林的转换和应用4. 图结构4.1 图的定义和基本术语4.2 图的存储结构(邻接矩阵和邻接表)4.3 图的遍历(深度优先搜索和广度优先搜索)4.4 最小生成树和最短路径算法5. 查找算法5.1 查找的基本概念和分类5.2 顺序查找算法5.3 二分查找算法5.4 哈希查找算法6. 排序算法6.1 排序的基本概念和分类6.2 内部排序算法(插入排序、冒泡排序、选择排序、快速排序、归并排序)6.3 外部排序算法四、教学方法1. 集中讲述与课堂演示相结合的教学方法。
2. 利用多媒体技术展示数据结构的基本概念、实例和操作过程。
3. 提供编程实践的机会,让学生独立设计和实现各类数据结构。
4. 组织小组讨论和团队合作,解决数据结构相关问题。
五、考核方式1. 平时成绩包括课堂表现、作业、实验和参与度。
《数据结构》教学大纲
![《数据结构》教学大纲](https://img.taocdn.com/s3/m/4fc7cf0d3868011ca300a6c30c2259010302f367.png)
《数据结构》教学大纲数据结构教学大纲一、课程介绍1.1课程名称:数据结构1.2学分:3学分1.3先修课程:计算机基础1.4课程性质:必修课程1.5学习方式:课堂讲授、实践操作、实验、课程作业二、教学目标2.1知识目标通过本课程的学习,学生应该掌握以下知识:-基本数据结构的概念和特性,包括数组、链表、栈、队列、树和图等;-常用的数据结构算法,如查找、排序、插入和删除等;-理解数据结构的时间复杂度和空间复杂度,并能进行分析和评估;-能够选择合适的数据结构和算法来解决实际问题。
2.2能力目标-能够运用所学的数据结构和算法解决实际问题;-能够分析和评估不同数据结构和算法的优劣;-具备良好的编程能力,能够实现数据结构的基本操作;-能够进行抽象思维和问题建模,将实际问题转化为数据结构的操作。
2.3态度目标-具备良好的团队合作和沟通能力,能够与他人合作解决问题;-具备批判性思维和创新精神,能够提出新的数据结构和算法。
三、教学内容3.1数据结构概述-数据结构的定义和分类;-数据结构与算法的关系;-数据结构的应用领域。
3.2线性表-线性表的定义和基本操作;-顺序表和链表的实现;-线性表的应用。
3.3栈和队列-栈和队列的定义和基本操作;-栈和队列的实现;-栈和队列的应用。
3.4树和二叉树-树和二叉树的定义和基本操作;-二叉树的遍历和线索化;-树和二叉树的应用。
3.5图-图的定义和基本操作;-图的存储结构和遍历算法;-图的应用。
3.6查找和排序-查找算法的分类和基本思想;-顺序查找和二分查找;-排序算法的分类和基本思想;-冒泡排序、插入排序和快速排序。
四、教学方法4.1讲授法:通过课堂讲授,向学生介绍数据结构的概念、特性和应用,讲解基本操作和算法的原理和实现方法。
4.2实践操作:通过编程实践和课程作业,让学生运用所学的数据结构和算法解决实际问题,加深对知识的理解和运用能力。
4.3实验:通过实验,让学生亲自操作和实验不同的数据结构,加深对数据结构和算法的理解。
数据结构---教学大纲
![数据结构---教学大纲](https://img.taocdn.com/s3/m/2778f75ecc22bcd127ff0c66.png)
数据结构教学大纲数据结构是计算机和信息类专业体系中的一门基础课,对培养学生的算法分析与设计能力、程序实现能力、系统设计能力、计算思维能力具有重要的作用。
课程概述“数据结构”是一门研究非数值计算的程序设计问题中计算机的操作对象及其之间关系与操作的课程。
它是计算机相关专业的一门重要的核心专业基础课。
该课程旨在培养学生基本数据结构分析能力和综合程序设计的实现能力,体现着创造性思维的信息素质培养过程,是计算机科学与技术人才素质培养框架中的脊梁骨,起到了承上启下的作用,处于一个主干的核心地位。
特别在与程序设计相关的课程体系中,程序设计语言只是一个程序设计工具,通过数据结构的学习才具备基本的算法设计能力.通过本课程学习,使学习者理解并掌握数据结构的一般原理。
掌握各种逻辑结构的特点、各逻辑结构在计算机中的存储表示及其运算实现;掌握算法的评价标准及评价方法。
培养学习者抽象思维能力。
提升学习者算法设计能力;提高学习者解决实际问题的应用能力。
能够针对给定的一般问题设计出求解算法,包括问题的抽象、数据的提取和组织、数据逻辑结构的确定、数据物理存储方式的确定、算法设计以及编程等。
学好数据结构为后续专业课程以及设计系统程序打下坚实的理论基础和实践基础。
本课程在线提供了的教学资源:1) 教学视频:针对大纲中重点教学内容均有相应教学视频,供大家反复观看,以深刻领悟课程重点和难点内容。
2) 教学课件:每讲均提供了相应PPT供大家课下学习。
3) 课后作业:每讲后均提供了课后客观作业及思考与设计。
便于巩固和加深对教学内容的理解和应用。
4) 讨论区:供师生课后进行自由讨论。
授课目标1.使学习者理解并掌握数据结构的一般原理。
掌握各种逻辑结构的特点、各逻辑结构在计算机中的存储表示及其运算实现;2. 使学习者掌握算法的评价标准及评价方法。
3.提升学习者算法设计能力以及解决实际问题的能力。
能够针对给定的一般问题设计出求解算法,包括问题的抽象、数据的提取和组织、数据逻辑结构的确定、数据物理存储方式的确定、算法设计以及编程等。
数据结构---教学大纲
![数据结构---教学大纲](https://img.taocdn.com/s3/m/2026e9b7f5335a8102d220de.png)
数据结构教学大纲数据结构是编程最重要的基本功!学了顺序表和链表,你就知道,在查询操作更多的程序中,你应该用顺序表;而修改操作更多的程序中,你要使用链表;而单向链表不方便怎么办,每次都从头到尾好麻烦啊,怎么办?你这时就会想到双向链表or循环链表。
课程概述数据结构课程是面向计算机科学与技术、信息安全、物联网工程专业的本科学生开设的专业核心必修课程。
通过本课程的学习,使学生熟练地掌握在程序设计应用中,特别是在软件系统的非数值计算类应用方面,常用数据模型以及实现方法;熟练建模的基本方法以及在计算机科学与工程中的基本应用;在高级语言程序设计课程的学习基础之上,进一步提高程序设计的综合能力;在理论和方法上,奠定后续专业课程学习的基础。
总之,学好数据结构就对了。
数据结构就相当于:要拧螺母,肯定用扳手这个“数据结构”,当然用钳子也行,只不过也没那么好用。
学习数据结构,就是为了了解以后在IT行业里搬砖需要用到什么工具,这些工具有什么利弊,应用于什么场景。
以后用的过程中,你会发现这些基础的“工具”也存在着一些缺陷,你不满足于此工具,此时,你就开始自己在这些数据结构的基础上加以改造,这就叫做自定义数据结构。
而且,你以后还会造出很多其他应用于实际场景的数据结构。
课程大纲01第一章绪论引入数据结构课程的学习,说明数据结构的相关概念,并概述算法的基本特性。
课时1.1 绪论1.2 什么是数据结构1.3 相关基本概念和术语1.4 算法的基本特征1.5 算法分析相关概念第一章绪论单元测试02第二章线性表数据结构中最基础的顺序表和链表的基本特性和算法。
课时2.1 线性表的概念以及抽象数据类型2.2 线性表的顺序表示2.3 顺序表的插入删除算法移动元素次数分析2.4 顺序存储结构的优缺点引出单链表的结构类型定义2.5 单链表的算法:生成先进先出单链表、后进先出单链表2.6 单链表的算法2.7 单链表的算法2.8 单链表的合并2.9 循环链表和双向循环链表的概念第二章线性表单元测试03第三章栈和队列栈和队列的数据结构和基本特性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》教学大纲课程编号:071213A课程类型:□通识教育必修课□通识教育选修课□专业必修课□专业选修课■学科基础课总学时:48讲课学时:32 实验(上机)学时:16学分:3适用对象:计算机科学与技术专业先修课程:程序设计基础与应用、计算机基础一、教学目标本课程是计算机科学与技术专业的必修课。
本课程是计算机科学与技术专业的核心课程,既重视学生相关理论的系统学习,又强调培养学生发现问题、分析问题和解决问题的实践能力。
《数据结构》在计算机科学中是一门综合性的专业主干课,它是介于数学、计算机硬件、计算机软件三者之间的一门核心课程,而且是操作系统、数据库系统及其它系统程序的大型应用程序设计的基础,同时又直接为从事各类计算机应用的技术人员提供了必要的基本知识和解决实际问题的多种方法。
用计算机解决任何问题都需要进行数据表示和数据处理,而数据表示和数据处理正是《数据结构》要研究的内容。
《数据结构》主要介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。
该课程逻辑上以线性结构、层次结构、网状结构为主线,物理上分顺序存储、链式存储,分别介绍基本数据结构的特点和算法。
并重点介绍有关各种检索、排序和文件组织的常用算法。
通过上述知识的学习和能力的提高,为后续学习和实际工作打下良好的知识基础和能力基础。
目标1:通过对数据结构基本知识进行讲解,让学生理解并掌握数据的逻辑结构和物理结构,并掌握算法设计的基本思想。
目标2:培养学生分析算法复杂度的初步能力,锻炼学生逻辑思维能力和想象能力,并使之了解数据结构的各种应用场景。
目标3:鼓励学生运用算法知识解决各自学科的实际问题,培养他们的独立科研的能力和理论联系实际的能力。
二、教学内容及其与毕业要求的对应关系(一)教学内容1.知识体系第一部分:数据结构的基本概念,包括数据、数据元素、数据项等基本概念、数据类型、抽象数据类型、算法的定义、算法的特性、算法的时间代价、算法的空间代价;第二部分:线性表的逻辑结构特性,以及线性表的两种存储实现方式;顺序表的定义与实现,包括搜索、插入、删除算法的实现及其平均比较次数的计算;单链表的类定义、构造函数、单链表的插入与删除算法及其平均比较次数的计算;第三部分:栈的定义、特性和栈的抽象数据类型,栈的顺序表示、链表表示以及相应操作的实现;队列的定义、特性和队列的抽象数据类型,队列的顺序表示、链表表示以及相应操作的实现;第四部分:串的定义,串的表示和实现,串的操作的定义;第五部分:数组的两种存储表示方法;矩阵的压缩存储;第六部分:树和森林的概念。
包括树的定义、树的术语、树的抽象数据类型;二叉树的概念、性质及二叉树的表示;二叉树的遍历方法;线索化二叉树的特性及寻找某结点的前驱和后继的方法;树与森林的实现,重点在用二叉树实现;森林与二叉树的转换;树的遍历算法;二叉树的计数方法及从二叉树遍历结果得到二叉树的方法;赫夫曼树的实现方法、构造赫夫曼编码的方法及带权路径长度的计算;第七部分:图的基本概念和图的抽象数据类型,图的3种存储表示:邻接矩阵、邻接表和邻接多重表。
对于前两种,要求掌握典型操作,如构造、求根、找第一个邻接顶点、找下一个邻接顶点等操作的实现算法;图的两种遍历算法与求解连通性问题的方法。
包括深度优先搜索和广度优先搜索算法、求连通分量的方法;构造最小生成树的Prim算法和Kruskal算法,要求理解具体算法实现;活动网络的拓扑排序算法;求解关键路径的方法;如何用Dijkstra方法求解单源最短路径问题(不要求具体算法实现);第八部分:查找表的定义、分类和各类的特点;顺序查找和二分查找的思想和算法;二叉排序树的概念和有关运算的实现方法;哈希表、哈希函数的构造方法、以及处理冲突的方法;哈希存储和哈希查找的基本思想及有关方法、算法;第九部分:排序的基本概念和性能分析方法;插入排序、交换排序、选择排序、归并排序等内排序的方法及其性能分析方法;2.核心内容介绍本课程的核心内容包括线性结构、树形结构、图形结构,这三种结构的数据类型定义和逻辑实现的方法。
通过本课程的学习,要求学生了解数据结构及其分类、数据结构与算法的密切关系;熟悉各种基本数据结构及其操作,学会根据实际问题要求来选择数据结构;掌握设计算法的步骤和算法分析方法;掌握数据结构在排序和查找等常用算法中的应用。
(二)教学方法和手段根据教学目标,拟采用的教学方法有:课堂讲解基本概念和核心知识,讲授和讨论相结合领会知识要点,锻炼解决问题的能力,最后借助Microsoft Visual C++软件进行上机操作和具体实践。
(三)学习要求1.为有效学习本课程,要求学生首先具备计算机基础、程序设计基础等方面的基本知识,较熟练掌握一门高级程序设计语言开发设计等方面的完整知识,具备基本的上级调试程序的能力。
自学时应该熟读大纲,提纲挈领地掌握数据结构的内容,随后,按照大纲熟读教材,还要参考大量的参考文献,通过课后思考和练习题进行多角度和层次的反复学习。
2.上机实践,本门课程有很多上机内容,在每一章节都要进行相关程序的设计和调试。
建议自学时安装Microsoft Visual C++软件进行自学,完成书上例题的上机内容。
通过上机学习本课程的理论,掌握数据结构的基本算法。
(四)与毕业要求的对应关系通过教学和实践,培养学生运用数学工具和方法分析问题和从算法的角度运用数学工具解决问题的基本能力,培养学生设计算法和分析算法复杂性的基本能力,训练学生的逻辑思维能力和想象力,从而使他们能够正确地分析和评价一个算法,进一步设计出真正有效或更有效的算法,并使之了解算法理论的基础知识和发展概况。
在教学中,鼓励学生运用算法知识解决各个学科的实际计算问题,培养学生初步的独立开展科研工作的能力和理论联系实践,解决实际问题的能力,同时,为后续课程以及将来的研究工作提供必要的算法设计与分析的基础。
此外,配合实验课程的教学,学生应理论联系实际,理论指导实践,通过规范地完成一系列算法设计实验进一步巩固所学的相关书本知识,在知识、能力、素质上得到进一步的提高。
三、各教学环节学时分配教学课时分配四、教学内容第一章绪论第一节什么是数据结构第二节基本概念和术语第三节抽象数据类型的表示与实现第四节算法和算法分析1、算法2、算法设计的要求3、算法的效率4、算法的存储空间教学重点、难点:(1)重点:数据类型、数据结构;算法时间复杂度。
(2)难点:算法的时间复杂度与空间复杂度。
课程的考核要求:了解:各种基本概念和术语,数据、数据元素、数据项、数据结构等基本概念。
理解:算法描述和分析的方法。
数据结构在各种软件系统中所起的作用。
选择合适的数据是解决应用问题的关键步骤。
掌握:数据结构的逻辑结构、存储结构及数据的运算三方面的要领及相互关系。
数据结构的逻辑结构、存储结构及数据运算的含义及其相互关系。
数据的两大类逻辑结构和四种常用的存储表示方法。
应用:算法复杂度的分析方法。
算法、算法的时间复杂度和空间复杂度、最坏的和平均的时间复杂度等概念。
算法的时间复杂度不仅仅依赖于问题的规模,也取决于输入实例的初始状态。
算法描述和算法分析的方法,对于一般算法能分析出时间复杂度。
复习思考题:1. 算法的计算量的大小称为计算的()A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于()A.问题的规模 B. 待处理数据的初态 C. A和B3.计算机算法指的是(1),它必须具备(2)这三个特性。
(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性4.一个算法应该是()。
A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C.5. 下面关于算法说法错误的是()A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的6. 下面说法错误的是()(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)7.从逻辑上可以把数据结构分为()两大类。
A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、非线性结构D.初等结构、构造型结构8.以下与数据的存储结构无关的术语是()。
A.循环队列 B. 链表 C. 哈希表 D. 栈9.以下数据结构中,哪一个是线性结构()A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串10.以下那一个术语与数据的存储结构无关?()A.栈 B. 哈希表 C. 线索树 D. 双向链表11.在下面的程序段中,对x的赋值语句的频度为()FOR i:=1 TO n DOFOR j:=1 TO n DOx:=x+1;A.O(2n) B.O(n) C.O(n2) D.O(log2n)12.程序段FOR i:=n-1 DOWNTO 1 DOFOR j:=1 TO i DOIF A[j]>A[j+1]THEN A[j]与A[j+1]对换;其中n为正整数,则最后一行的语句频度在最坏情况下是()A. O(n)B. O(nlogn)C. O(n3)D. O(n2)13.以下哪个数据结构不是多型数据类型()A.栈B.广义表C.有向图D.字符串14.以下数据结构中,()是非线性数据结构A.树B.字符串C.队D.栈15. 下列数据中,()是非线性数据结构。
A.栈 B. 队列 C. 完全二叉树 D. 堆16.连续存储设计时,存储单元的地址()。
A.一定连续B.一定不连续C.不一定连续D.部分连续,部分不连续17.以下属于逻辑结构的是()。
A.顺序表 B. 哈希表 C.有序表 D. 单链表第二章线性表第一节线性表的类型定义第二节线性表的顺序表示和实现第三节线性表的链式表示和实现线性链表循环链表双向链表第四节一元多项式的表示及相加教学重点和难点:(1)重点:线性表的表示与实现。
顺序表和单链表的插入与删除操作实现。
(2)难点:双向链表的插入与删除操作实现。
课程的考核要求:了解:循环链表的实际应用。
针对线性表上所需要执行的主要操作,知道选择顺序表还是链表作为其存储结构才能取得较优的时空性能。
理解:线性表的逻辑结构和各种存储表示方法,以及定义在逻辑结构上的各种基本运算及其在存储结构上如何实现这些基本运算。
顺序表和链表的主要优缺点。