- 1、本文档共100页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构复习2012(本硕博与信工)
数据结构定义: 是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科。 数据结构(data structure):数据元素和数据元素关系的集合。 数据的逻辑结构:只抽象反映数据元素的逻辑关系 数据的存储(物理)结构—数据的逻辑结构在计算机存储器中的实现 线性表特点:在数据元素的非空有限集中 存在唯一的一个被称作“第一个”的数据元素 存在唯一的一个被称作“最后一个”的数据元素 除第一个外,集合中的每个数据元素均只有一个前驱 除最后一个外,集合中的每个数据元素均只有一个后继 设 A=(a1, a2, ... , ai-1, ai , ai+1, …, an)是一线性表 1)线性表的数据元素可以是各种各样的,但同一线性表中的元素必须是同一类型的; 2)在表中 ai-1 领先于 ai ,ai 领先于 ai+1,称 ai-1 是 ai 的直接前趋, ai+1 是ai 的直接后继; 3)在线性表中,除第一个元素和最后一个元素之外,其他元素都有且仅有一个直接前趋,有且仅有一个直接后继。线性表是一种线性数据结构; 4)线性表中元素的个数 n 称为线性表的长度,n=0时称为空表; 5)ai 是线性表的第 i 个元素,称 i 为数据元素 ai 的序号,每一个元素在线性表中的位置,仅取决于它的序号。 线性表的存储表示 在计算机内部可以采用两种不同方法来表示一个线性表,它们分别是顺序表示法和链表表示法。 线性表的顺序存储结构 线性表的链式存储结构 顺序存储结构的优点: 1)存储密度大、空间利用率高 2)元素可随机存取 顺序存储结构的缺点: 1)插入和删除时要移动大量的元素 2)长度较大的线性表须按最大需要的空间分配存储空间 链式存储表示的实现 可定义一个结构体来表示一个结点 struct node{type data; node *next}; 头指针:存放线性链表中第一个结点的存储地址; 空指针:不指向任何结点,线性链表最后一个结点的指针通常是指针; 头结点:线性链表的第一元素结点前面的一个附加结点,称为头结点; 带头结点的线性链表:第一元素结点前面增加一个附加结点的线性链表称为带头结点的线性链表; 链式存储表示的特点 逻辑上相邻的元素对应的存储位置是通过指针反映的,不要求物理上相邻。进行插入、删除运算时,只需修改指针域 每个结点都设有一个指针域,存储空间的开销较大 一般不预先分配好足够的存储空间以备使用,当有元素时,需临时分配一个空的结点空间,填上信息,插入到线性链表中;当某个结点不再使用时,应将其存储空间释放。 栈和队列是限定插入和删除只能在表的“端点”进行的线性表。 栈的定义和特点 定义:限定仅在表尾进行插入或删除操作的线性表,表尾—栈顶 (top),表头—栈底 (bottom / base ) ,不含元素的空表称空栈 特点:先进后出(FILO)或后进先出(LIFO) 堆栈的定义 堆栈是一种只允许在表的一端进行插入和删除运算的线性表。 允许进行运算的一端称为栈顶,另一端则称为栈底。 当表中没有元素时,称为空栈。 堆栈的插入运算简称为入栈或进栈,删除运算简称为出栈或退栈。 堆栈的特点 根据堆栈的定义,每次删除的总是堆栈中当前的栈顶元素,即最后进入堆栈的元素 在进栈时,最先进入的元素一定在栈底,最后进入的元素一定在栈顶。 由于这一特点,我们常称堆栈是后进先出表或下推表(LIFO Last In First Out)。 栈的链式存储与实现 链式栈的栈顶在链头(栈顶—栈底。对不带头结点的链式栈,头指针即是栈顶指针) 链式栈无栈满问题,空间可扩充 插入与删除仅在栈顶处执行 适合于多栈操作 链栈的特点 链表的头结点就是栈顶元素的结点 根据堆栈的定义,新结点的插入和栈顶结点的删除都在表头进行 插入一个新元素,相当于在第一个结点之前插入一个新结点 删除链接栈的栈顶元素,就是删除链表的第一个结点。 不会有栈满而产生溢出的问题 队列 队列的概念 队列的有关运算 ?抽象队列类的定义 ?顺序队列的定义及其实现 ?链式队列的定义及实现 队列的概念 ?队列简称队,是一种只允许在表的一端进行插入操作而在表的另一端进行删除操作的线性表。 允许进行插入的一端称为队尾,允许删除的一端称为队头。队的插入运算有时也简称进队,删除运算简称为出队。 队列也称为先进先出表。(FIFO) 队列的有关运算 ?进队 在队列的尾部插入一个新元素 出队 删除队列的队头元素 测试队空 测试队列是否为空 测试队满 测试队列是否为满 清队 创建一个空队列 队列的顺序存储结构---循环队列 ?队列的顺序存储结构的实现 ?队列的顺序存储结构的特点 队列的顺序存储结构的特点 进行插入运算,必须先测试队满与否 删除队头元素,
文档评论(0)