- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
03 队列结构 Part Three * * 栈·队列·链表 关于队列结构,大家普及组初赛就掌握了,这里不再赘述。 队列结构有什么基础的应用呢? 在我看来,队列和宽度优先搜索有一点点点的相似之处。 队列也可以做一些模拟题,这里不再介绍。 队列可以用STL的,也可以自己打。 如果自己打的话,可以直接开很大的数组,也可以用循环队列。 * * 栈·队列·链表 队列还有双端队列、单调队列。 关于队列结构大家在日常的编程(如广搜)中经常用到,就不放例题了。 * * 栈·队列·链表 04 链表结构 Part Four * * 栈·队列·链表 链表可以分为单向链表、双向链表,甚至多向链表,可以做到O(1)插入,O(n)查询。 一般最常用的是链表记边 以下是核心代码 链表还有其他的应用。 下面我来讲一下链表的启发式合并。 * * 栈·队列·链表 例3:梦幻布丁(HNOI2009) 【问题描述】 N个布丁摆成一行,进行M次操作。每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色。例如颜色分别为1,2,2,1的四个布丁一共有3段颜色。 【数据范围】 N,M ≤ 100000 * * 栈·队列·链表 例3:梦幻布丁(HNOI2009) 【样例输入】 4 3 1 2 2 1 2 1 2 1 2 【样例输出】 3 1 * * 栈·队列·链表 题解:--hzwer 1:将两个队列合并,有若干队列,总长度为n,直接合并,最坏O(N); 2:启发式合并呢? 每次我们把短的合并到长的上面去,O(短的长度),咋看之下没有多大区别,下面让我们看看均摊的情况: ①每次O(N);②每次合并后,队列长度一定大于等于原来短的长度的两倍。 这样相当于每次合并都会让短的长度扩大一倍以上, 最多扩大logN次,所以总复杂度O(NlogN),每次O(logN)。 * * 栈·队列·链表 栈·队列·链表 栈·队列·链表 栈·队列·链表 * 模板来自于 / * 模板来自于 * ——JYT 栈·队列·链表 * * 栈·队列·链表 内容提要 单调队列/栈 链表结构 队列结构 栈结构 数据结构概述 第一章 第二章 第三章 第四章 第五章 * * 栈·队列·链表 01 数据结构概述 Part One * * 栈·队列·链表 数据结构是数据的组织形式,可以用来表征特定的对象数据。 在计算机程序设计中,操作的对象是各式各样的数据,这些数据往往拥有不同的数据结构,例如数组、结构体、联合、指针和链表等。 而算法和数据结构具有千丝万缕的联系,计算机科学家尼克劳斯? 沃思(Niklaus Wirth)提出“数据结构+算法=程序”的著名公式,就是因为不同的数据结构所采用的处理方法不同,计算的复杂程度也不同,因此算法往往是依赖于某种数据结构的,即数据结构是算法实现的基础。 * * 栈·队列·链表 数据结构是计算机中对数据的一种存储和组织方式,同时也泛指相互之间存在一种或多种特定关系的数据的集合。数据结构是计算机艺术的一种体现, 合理的数据结构能够提高算法的执行效率,还可以提高数据的存储效率。 数据结构的分类 数据结构有很多种,一般来说,按照数据的逻辑结构对其进行简单的分类,包括线性结构和非线性结构两类。 * * 栈·队列·链表 线性结构 简单地说,线性结构就是表中各个结点具有线性关系。如果从数据结构的语言来描述,线性结构应该包括如下几点: 线性结构是非空集。 线性结构有且仅有一个开始结点和一个终端结点。 线性结构所有结点都最多只有一个直接前趋结点和一个直接后继结点。 栈、队列和串等都是线性结构。 * * 栈·队列·链表 非线性结构 简单地说,非线性结构就是表中各个结点之间具有多个对应关系。如果从数据结构的语言来描述,非线性结构应该包括如下几点: 非线性结构是非空集。 非线性结构的一个结点可能有多个直接前趋结点和直接后继结点。 在实际应用中,广义表、树结构和图结构等数据结构都是非线性结构。 * * 栈·队列·链表 常用的数据结构 在计算机科学的发展过程中,数据结构也随着发展。目前,程序设计中常用的数据结构包括如下几个。 数组(Array) 数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。数组可以说是最基本的数据结构,在各种编程语言中都有对应。一个数组可以分解为多个数组元素,按照数据元素的类型,数组可以分为整型数组、字符型数组、浮点型数组、指针数组和结构数组等。数组还可以有一维、二维以及多维等表现形式。 * * 栈·队列·链表 栈(stack) 栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。栈按照后进先出的原则来存储数据,也就是说,先插入的数据将被压入栈底,最后插入的数据在栈顶,读出数据时,从栈顶开始逐
文档评论(0)