数据结构与算法(公共).ppt
《数据结构与算法(公共).ppt》由会员分享,可在线阅读,更多相关《数据结构与算法(公共).ppt(46页珍藏版)》请在三一办公上搜索。
1、第一章 数据结构与算法,1.1 算法1.2 数据结构的基本概念1.3 栈及线性链表1.4 树与二叉树1.5 查找技术1.6 排序技术,1.1 算法,算法与数据结构的关系:程序设计主要包括两个方面,一是行为特性的设计,二是结构特性的设计。行为特性的设计一般是指将解决问题过程中的每一个细节准确地加以定义,并将全部的解题过程用某种工具完整地描述出来。这一过程也称为算法的设计。结构特性的设计是指为问题的解决确定合适的数据结构。数据结构与算法之间有着密切的关系。特别是对于数据处理问题,算法的效率通常与数据结构在计算机中的表示有着直接的关系。,考点1 算法的基本概念考试链接:考点1在笔试考试中考核的几率为
2、30%,主要是以填空题的形式出现,分值为2分,此考点为识记内容,读者还应该了解算法中对数据的基本运算。计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。算法不等于程序,但程序可以作为算法的一种描述。1算法的基本特征:可行性、确定性、有穷性、拥有足够的情报2算法的基本要素:一个算法由两种基本要素组成:一是对数据对象的运算和操作;二是算法的控制结构。(1)算法中对数据的运算和操作 在一般的计算机系统中,基本的运算和操作有以下4类:算术运算、逻辑运算、关系运算和数据传输。(2)算法的控制结构:算法中各操作之间的执行顺序称为算法的控制结构。描述算法的工具通常有传统流程图、N-S结构化流程
3、图、算法描述语言等。一个算法一般都可以用顺序、选择、循环3种基本控制结构组合而成。,考点2 算法复杂度考试链接:考点2在笔试考试中,是一个经常考查的内容,在笔试考试中出现的几率为70%,主要是以选择的形式出现,分值为2分,此考点为重点识记内容,读者还应该识记算法时间复杂度及空间复杂度的概念。1.算法的时间复杂度 算法的时间复杂度是指执行算法所需要的计算工作量。同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行,效率均不同。这表明使用绝对的时间单位衡量算法的效率是不合适的。撇开这些与计算机硬件、软件有关的因素,可以认为一个特定算法“运行工作量”的大小,只依赖于问题
4、的规模(通常用整数n表示),它是问题规模的函数。即 算法的工作量=f(n)其中n是问题的规模,2.算法的空间复杂度 算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。,疑难解答:算法的工作量用什么来计算?算法的工作量用算法所执行的基本运算次数来
5、计算,而算法所执行的基本运算次数是问题规模的函数,即算法的工作量=f(n),其中n是问题的规模。,1.2 数据结构的基本概念,考点3 数据结构的定义考试链接:考点3在笔试考试中,是一个经常考查的内容,在笔试考试中出现的几率为70%,主要是以选择的形式出现,分值为2分,此考点为识记内容,读者还应该识记数据的逻辑结构和存储结构的概念。数据结构作为计算机的一门学科,主要研究和讨论以下三个方面的问题:(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据元素进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。,数据:是对客观事物的符号
6、表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。数据元素:在数据处理领域中,每一个需要处理的对象都可以抽象成数据元素,它是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。有时,一个数据元素可由若干个数据项组成,数据项是数据的不可分割的最小单位。如下表中一本书的书目信息为一个数据元素,而书目信息中的每一项(如书名、作者名等)为一个数据项。前后件关系:是数据元素之间的一个基本关系,一般来说,数据元素之间的任何关系都可以用前后件关系来描述。数据结构:是指带有结构的数据元素的集合。所谓结构实际上就是指数据元素之间的前后件关系。,数据的逻辑结构是对数据元素之间的
7、逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了数据元素之间的前后件关系,通常记为R。即一个数据结构可以表示成B=(D,R)其中B表示数据结构。为了反映D中各数据元素之间的前后件关系,一般用二元组来表示。例如,假设a和b是D中的两个数据,则二元组(a,b)表示a是b的前件,b是a的后件。这样,在D中的每两个元素之间的关系都可以用这种二元组来表示。数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。一个数据结构中的各数据元素在计算机存储空间中的位置关系与逻
8、辑关系有可能是不同的。,由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此,为了表示存放在计算机存储空间中的各数据元素之间的逻辑关系(即前后件关系),在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。而采用不同的存储结构,其数据处理的效率是不同的。因此,在进行数据处理时,选择合适的存储结构是很重要的。,考点4 线性结构与非线性结构考试链接:考点4在笔试考试中,虽然说不是考试经常考查的内容,但读者还是对此考点有所了解,在笔试考试中出现的几率为30%
9、,主要是以填空题出现的形式出现,分值为2分,此考点为识记内容。根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:(1)有且只有一个根结点(没有前件的结点称为根结点);(2)每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构。线性结构又称线性表。在一个线性结构中插入或删除任何一个结点后还应是线性结构。如果一个数据结构不是线性结构,则称之为非线性结构。,疑难解答:空的数据结构是线性结构还是非线性结构?线性结构与非线性结构都可以是空的数据结构。一个空的数据结构究竟是属于线性结构还是属于非线性结
10、构,这要根据具体情况来确定。如果对该数据结构的算法是按线性结构的规则来处理的,则属于线性结构;否则属于非线性结构。,线性表的基本概念 线性表是由n(n=0)个数据元素a1,a2,an组成的一个有限序列。表中的每一个数据元素,除了第一个外,有且只有一个前件,除了最后一个外,有且只有一个后件。即线性表或是一个空表,或可以表示为(a1,a2,ai,an)其中ai(i=1,2,n)是属于数据对象的元素,通常也称其为线性表中的一个结点。显然,线性表是一种线性结构。数据元素在线性表中的位置只取决于它们自己的序号,即数据元素之间的相对位置是线性的。非空线性表有如下一些结构特征:(1)有且只有一个根结点a1,
11、它无前件;(2)有且只有一个终端结点an,它无后件;(3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。线性表中结点的个数n称为线性表的长度。当n=0时,称为空表。,线性表的顺序存储结构 线性表的顺序存储结构具有以下两个基本特点:(1)所有元素所占的存储空间是连续的;(2)各数据元素在存储空间中是按逻辑顺序依次存放的。由此可以看出,在线性表的顺序存储结构中,其前后件两个元素在存储空间中是紧邻的,且前件元素一定存储在后件元素的前面。顺序表的插入运算 设长度为n的线性表为(a1,a2,ai,an),现要在线性表的第i个元素ai之前插入一个新元素b,插入后得到长度为n+1的
12、线性表。一般情况下,要在第i(1=i=n)个元素之前插入一个新元素,首先要从最后一个元素开始,直到第i个元素,其间共n-i+1个元素依次向后移动一个位置,移动结束后,第i个位置就被空出,然后将新元素插入到第i项。插入结束后,线性表的长度就增加了1。在平均情况下,在线性表中插入一个新元素,需要移动表中一半的元素。,顺序表的删除运算 设长度为n的线性表为(a1,a2,ai,an),现要删除第i个元素ai,删除后得到长度为n-1的线性表。一般情况下,要删除第i(1=i=n)个元素,则要从第i+1个元素开始,直到第n个元素,其间共n-i个元素依次向前移动一个位置。删除结束后,线性表的长度就减小了1。在
13、平均情况下,在线性表中删除一个新元素,需要移动表中一半的元素。,1.3 栈、队列及线性链表,考点5 栈、队列、线性链表及其基本运算考试链接:考点5在笔试考试中,是一个必考的内容,在笔试考试中出现的几率为100%,主要是以选择的形式出现,分值为2分,此考点为重点掌握内容。1栈的基本概念 栈是限定只在一端进行插入与删除的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。当表中没有元素时称为空栈。栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈是按照“先进后出”或“后进先出”的原则组织数据的。因此,栈也被称为“先进后出”表或“后
14、进先出”表。由此可以看出,栈具有记忆作用。通常用指针top来指示栈顶的位置,用指针bottom指向栈底。往栈中插入一个元素称为入栈运算,从栈中删除一个元素(即删除栈顶元素)称为退栈运算。栈顶指针top动态反映了栈中元素的变化情况。,2栈的顺序存储及其运算 用一维数组S(1m)作为栈的顺序存储空间,其中m为最大容量。在栈的顺序存储空间S(1m)中,S(bottom)为栈底元素(在栈非空的情况下),S(top)为栈顶元素。top=0表示栈空;top=m表示栈满。栈的基本运算有三种:入栈、退栈与读栈顶元素。(1)入栈运算:入栈运算是指在栈顶位置插入一个新元素。首先将栈顶指针加1(即top加1),然后
15、将新元素插入到栈顶指针指向的位置。当栈顶指针已经指向存储空间的最后一个位置时,说明栈空间已满,不可能再进行入栈操作。这种情况称为栈上溢错误。(2)退栈运算:退栈是指取出栈顶元素并赋给一个指定的变量。首先将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量,然后将栈顶指针减1(即top减1)。当栈顶指针为0时,说明栈空,不可进行退栈操作。这种情况称为栈的下溢错误。(3)读栈顶元素:读栈顶元素是指将栈顶元素赋给一个指定的变量。这个运算不删除栈顶元素,只是将它赋给一个变量,因此栈顶指针不会改变。当栈顶指针为0时,说明栈空,读不到栈顶元素。,注:栈支持子程序调用。在主程序调用子函数时要首先保存主程序当前
16、的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点(只能在一端进行插入与删除)。,3.队列的基本概念 队列是指允许在一端进行插入而在另一端进行删除的线性表。允许插入的一端称为队尾,通常用一个称为尾指针(rear)的指针指向队尾元素,即尾指针总是指向最后被插入的元素;允许删除的一端称为排头(也称为队头),通常用一个队头指针(front)指向队头元素的前一个位置。队列又称为“先进先出”或“后进后出”的线性表。在队列中,队尾指针rear和队头指针front共同反映了队列中元素动态变化的情况。往队列的队尾插入一个元素称为入队运算,从队列
17、的队头删除一个元素称为退队运算。4.循环队列及其运算 所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置已被使用而再要进行入队运算时,只要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。,循环队列的初始状态为空,即rear=front=m 每进行一次入队运算,队尾指针加1;当队尾指针rear=m+1时,则置rear=1 每进行一次退队运算,队头指针加1;当队头指针front=m+1时,则置front=1注:随着插入、删除元素的进行,队头指针可以大于队尾指针也可以小
18、于队尾指针 在实际使用循环队列时,为了能区分队列满还是队列空,通常还需增加一个标志s,s值的定义如下:s=0 表示队列空s=1 表示队列非空由此可以得出队列空与队列满的条件如下:(1)队列空的条件为s=0;(2)队列满的条件为(s=1)且(front=rear);,循环队列入队与退队的算法如下:假设循环队列的初始状态为空,即s=0,且front=rear=m入队运算 入队运算有两个基本操作:首先将队尾指针加1(即rear=rear+1),并当rear=m+1时置rear=1;然后将新元素插入到队尾指针指向的位置。当循环队列非空(s=1)且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运
19、算。这种情况称为“上溢”。退队运算 退队运算有两个基本操作:首先将队头指针加1(即front=front+1),并当front=m+1时置front=1;然后将队头指针指向的元素赋给指定的变量。当循环队列为空(s=0)时,不能进行退队运算。这种情况称为“下溢”。,考点6 线性链表的基本概念考试链接:考点6在笔试考试中出现的几率为30%,主要是以选择的形式出现,分值为2分,此考点为识记内容。重点识记结点的组成。两种不同的存储结构:顺序存储结构和链式存储结构。在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域,另一部分用于存放指针,称为指针域。其中指针用于指向该结点的
20、前一个或后一个结点(即前件或后件)。链式存储方式既可用于表示线性结构,也可用于表示非线性结构。(1)线性链表 线性表的链式存储结构称为线性链表。在某些应用中,对线性链表中的每个结点设置两个指针,一个称为左指针,用以指向其前件结点;另一个称为右指针,用以指向其后件结点。这样的表称为双向链表。(2)带链的栈 栈也是线性表,也可以采用链式存储结构。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,这种带链的栈称为可利用栈。,在链式结构中,存储空间位置关系与逻辑关系是什么?在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 算法 公共
链接地址:https://www.31ppt.com/p-6578873.html