网站大量收购闲置独家精品文档,联系QQ:2885784924

数据结构与算法.doc.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构与算法.doc

第一章 数据结构与算法算法:是指解题方案的准确而完整的描述。算法的基本特征:可行性确定性算法中每一步都必须有明确定义,不充许有模棱两可的解释,不允许有多义性;有穷性算法必须能在有限的时间内,即能在执行有限个步骤后终止拥有足够的情报。算法的基本要素:算法的控制结构。对数据对象的运算和作;基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的3种基本控制结构:顺序结构、选择结构、循环结构。 算法基本设计方法:列举法、归纳法、递推、递归、减半递推技术、回溯法。 算法复杂度:时间复杂度指执行算法所需要的计算工作量空间复杂度指执行这个算法所需要的内存空间指令系统:一个计算机系统能执行的所有指令的集合1.数据结构的基本概念 数据结构:指相互有关联的数据元素的集合。 数据结构研究的 3 个方面: 数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; 在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构; 对各种数据结构进行的运算。2.逻辑结构 数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了数据元素之间的前后件关系,通常记为R。一个数据结构可以表示成:B=(D,R)其中 B 表示数据结构。为了反映 D 中各数据元素之间的前后件关系,一般用二元组来表示。 例如,如果把一年四季看作一个数据结构,则可表示成B =(D,R) D ={春季,夏季,秋季,冬季}R ={(春季,夏季),(夏季,秋季),(秋季,冬季)}数据的存储结构是指数据的逻辑结构在计算机中的表示一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接等存储结构。有序线性表既可以采用顺序存储结构,也可以采用链式存储结构根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。 线性结构满足两个条件: 有且只有一个根结点; 每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构。线性结构又称线性表。在一个线性结构中插入或删除任何一个结点后还应是线性结构。栈、队列、串等都线性结构。 非线性结构数据结构不是线性结构,则称之为非线性结构。数组、广义表、树和图等数据结构都是非线性结构。 线性表的顺序存储结构具有以下两个基本特点: 线性表中所有元素所占的存储空间是连续的; 线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 元素 ai 的存储地址为:ADR(ai)=ADR(a1)+(i-1)k,ADR(a1)为第一个元素的地址,k 代表每个元素占的字节数。线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。 在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。顺序表的运算:查找、插入、删除。栈和队列栈限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。 栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom表示栈底。 栈的基本运算:插入元素称为入栈运算;(2)删除元素称为退栈运算;(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。栈支持子程序调用的数据结构 队列指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。Rear指针指向队尾,front指针指向队头。当表中没有元素时称为空队列 队列是“先进出”(FIFO)或“后进后出”(LILO)的线性表。 队列运算包括入队运算:从队尾插入一个元素;(2)退队运算:从队头删除一个元素。 循环队列:循环队列是队列的结构。在链式存储方式中,要求每个结点由两部分组成:用于存放数据元素值,称为数据域,用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。 链式存储方式既可用于表示线性结构,也可用于表示非线性结构。 线性表的链式存储结构称为线性链表。 在某些应用中,对线性链表中的每个结点设置两个指针,一个称为左指针,用以指向其前件结点;另一个称为右指针,用以指向其后件结点。这样的表称为双向链表。在线性链表中,各数据元素结点的存储空间可以是不连续的,且各数据元素的存储顺序与逻辑顺序可以不一致。在线性链表中进行插入与删除,不需要移动链表中的元素。 线性单链表中,HEAD 称为头指针,HEAD=NULL(或 0)称为空表。 如果是双向链表的两指针:左指针(Llink)指向前件结点,右指针(Rlink)指向后件结点。 线性链表的基本运算:查找、插入、删除。 带链

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档