第一章 数据结构与算法概论
- 格式:ppt
- 大小:1.11 MB
- 文档页数:65
第1章数据结构与算法第1章数据结构与算法大纲要求(1)算法的基本概念,算法的复杂度的概念和意义(时间复杂度与空间复杂度)(2)数据结构的定义,数据的逻辑结构与存储结构,数据结构的图形表示,线性结构与非线性结构的概念(3)线性表的定义,线性表的顺序存储结构及其插入与删除运算(4)栈和队列的定义,栈和队列的顺序存储结构及其基本运算(5)线性单链表、双向链表与循环链表的结构及其基本运算(6)树的基本概念,二叉树的定义及其存储结构,二叉树的前序、中序遍历和后序遍历(7)顺序查找与二分法查找算法,基本排序算法(交换类排序,选择类排序,插入类排序)重要考点提示根据对历年真题的分析可知,本章考核内容约占15%,主要包括以下几个方面:(1)算法复杂度(2)数据结构栈、队列、线性链表的基本概念(3)二叉树和存储结构(4)线性表、树的结点计算和遍历(5)冒泡排序的最坏情况下的次数计算1.1算法考点1 算法的基本概念(1)作为一个算法,一般应具有四个基本特征:可行性、确定性、有穷性和拥有足够的情报。
(2)一个算法通常由两种基本要素组成:一是对数据对象的运算和操作,二是算法的控制结构。
算法的主要特征是着重于算法的动态执行。
一个算法的功能不仅取决于所选用的操作,而且还与各操作之间的执行顺序有关。
算法的控制结构不仅决定了算法中各操作的执行顺序,而且也直接反映了算法的设计是否符合结构化原则。
(3)算法设计基本方法主要有列举法、归纳法、递推、递归、减半递推技术和回溯法。
考点2算法的复杂度算法复杂度主要包括时间复杂度和空间复杂度。
(1)算法的时间复杂度所谓算法的时间复杂度,是指执行算法所需要的计算工作量。
算法所执行的基本运算次数与问题的规模有关。
算法的工作量用算法所执行的基本运算次数来度量。
对于一个固定的规模,算法所执行的基本运算次数还可能与特定的输入有关。
在同一个问题规模下,如果算法执行所需的基本运算次数取决于某一特定输入时,可以用两种方法来分析算法的工作量;一种是平均性态分析,用A(n)表示。
算法与数据结构各章学习要点第 1 章概论一、学习要点:1、熟练掌握各基本概念:数据、数据元素、数据项、数据结构、逻辑结构、存储结构、顺序存储结构、链式存储结构的定义。
2、掌握逻辑结构、存储结构的基本分类。
3、掌握算法的基本特性4、理解算法效率的评价指标(时间复杂度、空间复杂度),能够评价简单算法的时间复杂度。
二、作业练习:1、P10: —、二、三。
第 2 章线性表一、学习要点:1 、掌握线性结构的特点、线性表的定义,理解线性表的基本术语:表长、空表、直接前驱、直接后继。
2、掌握顺序表的定义和特点,掌握顺序表中第i 个元素的地址计算公式3、能够用 C 语言描述顺序表的类型并熟练应用,熟练掌握顺序表的基本运算及实现:初始化、插入、删除、按值查找。
4、掌握链表的定义,理解:头指针、头结点、首元结点(第一结点)的区别。
5、能够用C 语言描述单链表结点类型并熟练应用,熟练掌握单链表的基本运算及实现: 建立(头部建立、尾部建立)、求表长、查找(按序号查找、按值查找)、插入、删除。
6、理解循环链表、双向链表的算法实现特点。
7、掌握顺序表和链表存储结构的比较。
8、能够运用顺序表和单链表、循环单链表进行算法设计。
二、作业练习:P41: 一、二、三(1, 3, 4)第 3 章栈与队列一、学习要点:1 、掌握栈的定义和特点,掌握栈的基本术语:栈顶、栈底、空栈。
2、能够根据栈的特点,描述同一输入下的不同输出顺序。
3、能够用 C 语言描述顺序栈结点类型并熟练应用,掌握顺序栈的基本运算及实现:置空栈、判栈空、入栈、出栈、取栈顶元素。
4、掌握队列的定义和特点,掌握队列的基本术语:队头、队尾,掌握循环队列的目的。
5、理解循环队列区分队满和队空的方法,能够根据解决的方法设计数据结构,并实现循环队列的基本运算:置空队、入队、出队、判队空、判队满、求队列的长度。
6、能够利用栈和队列结构设计算法。
二、作业练习:P64 一、二、三(2, 3)第4章串一、学习要点:1、掌握串的定义和特点,掌握串的基本术语:串长、子串、主串、子串的位置、串相等、空串和空格串。
第一章数据结构概论本章主要介绍以下内容数据结构研究的主要内容1数据结构中涉及的基本概念2算法的概念、描述方法以及评价标准3课时分配:1、2,两个学时,3两个学时重点、难点:ADT、算法的概念、描述方法以及评价标准第一节数据结构研究的主要内容当今计算机应用的特点:所处理的数据量大且具有一定的关系;对其操作不再是单纯的数值计算,而更多地是需要对其进行组织、管理和检索。
应用举例1--学籍档案管理假设一个学籍档案管理系统应包含如下表所示的学生信息。
学生基本情况特点:每个学生的信息占据一行,所有学生的信息按学号顺序依次排列构成一张表格;表中每个学生的信息依据学号的大小存在着一种前后关系,这就是我们所说的线性结构;对它的操作通常是插入某个学生的信息,删除某个学生的信息,更新某个学生的信息,按条件检索某个学生的信息等等。
应用举例2--输出n个对象的全排列输出n个对象的全排列可以使用下图所示的形式描述。
结论计算机的操作对象的关系更加复杂,操作形式不再是单纯的数值计算,而更多地是对这些具有一定关系的数据进行组织管理,我们将此称为非数值性处理。
要使计算机能够更有效地进行这些非数值性处理,就必须弄清楚这些操作对象的特点,在计算机中的表示方式以及各个操作的具体实现手段。
这些就是《数据结构》这门课程研究的主要内容。
第二节基本概念和术语数据是对客观事物的符号表示。
在计算机科学中其含义是指所有能够输入到计算机中并被计算机程序处理的符号集合。
数据元素是数据集合中的一个实体,是计算机程序中加工处理的基本单位。
数据元素按其组成可分为简单型数据元素和复杂型数据元素。
简单型数据元素由一个数据项组成,所谓数据项就是数据中不可再分割的最小单位;复杂型数据元素由多个数据项组成,它通常携带着一个概念的多方面信息。
数据结构简单地说,就是相互之间存在一种或多种特定关系的数据元素的集合。
常见的数据结构有:线性结构、树形结构和图形结构。
===》(集合关系)逻辑结构数据结构中所说的"关系"实际上是指数据元素之间的逻辑关系,又称此为逻辑结构。
第一章数据结构与算法第一节.算法一.算法的基本概念所谓算法是指解题方案的准确而完整的描述。
算法不等于程序,也不等于计算方法。
通常,程序的编制不可能优于算法的设计。
1.算法的基本特征:作为一个算法,一般应具有以下几个基本特征(1)可行性(effectiveness)针对实际问题设计的算法,人们总是希望能够得到满意的结果。
但一个算法又总是在某个特定的计算工具上执行的。
因此,算法在执行过程中往往要受到计算工具的限制,使执行结果产生偏差。
(2)确定性(definiteness)算法的确定性,是指算法中的每一个步骤都必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。
(3)有穷性(finiteness)算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。
(4)拥有足够的情报一个算法是否有效,还取决于为算法所提供的情报是否足够。
通常,算法中的各种运算总是要施加至各个运算对象上,而这些运算对象又可能具有某种初始状态,这是算法执行的起点或是依据。
因此,一个算法执行的结果总是与输入的初始数据有关,不同的输入将会有不同的结果输出。
当输入不够或输入错误时,算法本身也就无法执行或导致执行有错。
一般来说,当算法拥有足够的情报时,算法才是有效的,而当提供的情报不够时,算法可能无效。
综上所述,所谓算法,是一组严谨地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,些顺序将在有限的次数下终止。
2.算法的基本要素一个算法通常由两种基本要素组成:一是对数据对象的运算和操作,二是算法的控制结构。
(1)算法中对数据的运算和操作:每个算法实际上是按解题要求从环境能进行的所有操作中选择合适的操作所组成的一组指令序列。
因些,计算机算法就是计算机能处理的操作所组成的指令序列。
基本运算和操作有以下四类:1)算术运算:主要包括加、减、乘、除等运算。
2)逻辑运算:主要包括“非”、“与”、“或”等运算。