北京师范大学数据结构教学资料 第3章-栈与队列 复_第1页
北京师范大学数据结构教学资料 第3章-栈与队列 复_第2页
北京师范大学数据结构教学资料 第3章-栈与队列 复_第3页
北京师范大学数据结构教学资料 第3章-栈与队列 复_第4页
北京师范大学数据结构教学资料 第3章-栈与队列 复_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构:栈与队列的深度解析北京师范大学计算机专业课程复习指南·第三章核心考点与底层机制Contents课程导航与知识图谱从基础概念到高级应用,系统掌握栈与队列的核心原理与工程实践。01栈的基本概念与存储实现02队列的基本概念与存储实现03栈的经典应用场景剖析04队列的扩展结构与高级应用05核心特性对比与算法选型指南CHAPTER01栈的基本概念与存储实现从逻辑限制到物理内存的映射机制Chapter01·Stack栈的逻辑结构与LIFO特性栈是运算受限制的线性表,通过严格限定仅在表尾(栈顶)进行插入与删除操作,天然赋予了数据"后进先出(LIFO)"的时序特征,这种限制极大简化了特定算法的状态管理复杂度。01操作受限的本质屏蔽了线性表中间的随机访问与任意位置插入,强制所有操作收敛于单一端点(Top),降低了状态维护的成本Top02LIFO时序特征数据元素的入栈与出栈顺序严格镜像对称,最后进入系统的状态总是最先被回溯或处理,完美契合"撤销"与"嵌套"逻辑LIFO03核心术语界定允许操作的一端称为栈顶(Top),固定不动的另一端称为栈底(Bottom),不含任何元素的空状态称为空栈(EmptyStack)TopBottom04物理世界映射类似弹夹装填、死胡同停车或叠放的盘子,最新加入的实体总是处于最易于被移除的物理位置后进先出AbstractDataType栈的抽象数据类型(ADT)规范栈的ADT定义了与底层物理存储解耦的标准接口契约。通过模板化与引用传参设计,在保证数据类型泛化的同时,利用布尔返回值有效规避了空栈弹出的内存越界风险。01进栈操作Push(Ex)将新元素压入栈顶,若底层空间不足则需触发扩容机制或抛出溢出异常,时间复杂度期望为O(1)。O(1)02出栈操作Pop(E&x)移除栈顶元素并通过引用参数返回其值,返回bool类型以标识操作是否成功,避免空栈读取导致的段错误。bool03访问栈顶getTop(E&x)仅读取栈顶元素而不改变栈的内部状态与指针位置,是实现对栈顶状态"窥探"的核心接口。Peek04状态判定IsEmpty/IsFull提供O(1)时间复杂度的状态查询,IsEmpty用于拦截非法出栈,IsFull用于顺序栈的溢出预警。GuardChapter06顺序栈的内存模型与指针控制toptop顺序栈利用一维数组实现连续内存映射,通过整型变量top作为游标精准追踪栈顶位置。top的初始值设定与边界条件判定是防止内存越界与逻辑错误的核心防线。01连续内存分配newE[maxSize]maxSize构造函数中通过newE[maxSize]动态申请一维数组,maxSize定义了栈的初始物理容量上限02栈顶指针初始化top-1count=top+1top初始值设为-1,使得count=top+1始终成立,建立值与元素个数的数学映射03栈空与栈满判定top==-1top==maxSize-1top==-1界定空栈;top==maxSize-1触发栈满预警,阻止写入以防越界覆盖04析构与内存回收delete[]elements析构函数必须显式调用delete[]elements释放动态数组,防止长时间运行系统中出现内存泄漏STACKOPERATIONS顺序栈核心操作:Push与Pop的时序解析顺序栈的入栈与出栈操作高度依赖自增/自减运算符的时序特性。通过前置与后置运算符的精准配合,在单条语句内完成指针偏移与数据读写的原子操作,确保了逻辑的严密与高效。进栈Push(Ex)IsFull()overflowProcess()边界拦截:首先调用IsFull()检测容量,若栈满则转入overflowProcess()进行扩容,绝不盲目写入elements[++top]=xtopx时序控制:执行elements[++top]=x,前置自增确保top指针先上移至新的空闲槽位,随后将元素x安全落位++top→Pre-increment出栈Pop(E&x)IsEmpty()false空栈防御:执行前必须通过IsEmpty()校验,若为空栈直接返回false,阻断非法的内存读取操作x=elements[top--]topx时序控制:执行x=elements[top--],后置自减确保先将当前top指向的有效数据赋值给x,随后指针下移完成逻辑删除top--→Post-decrementOVERFLOWPROCESS顺序栈的动态扩容机制为突破静态数组的容量桎梏,顺序栈引入动态扩容策略。通过申请倍增空间并进行数据迁移,在牺牲单次操作性能的前提下,换取了整体结构的无限延展能力与均摊O(1)的高效表现。01触发条件在Push操作前置校验中,一旦IsFull()返回真值,立即挂起入栈动作,调用私有函数overflowProcess()IsFull()02空间倍增策略newE[2*maxSize]申请双倍容量的新堆内存,倍增法能有效稀释后续连续入栈操作触发再次扩容的概率2×Capacity03数据平滑迁移通过循环将原数组[0,top]区间内的有效元素逐一拷贝至新数组,确保历史状态的无损继承[0,top]04指针与容量重置更新elements指针指向新内存块,maxSize翻倍,并安全delete[]旧内存,完成底层的无感热替换delete[]DATASTRUCTURE链式栈的节点设计与拓扑结构链式栈通过离散的堆内存节点与指针链接彻底摆脱了静态容量束缚。将单链表的头部定义为栈顶,巧妙利用头插法与头删法的O(1)特性,实现了空间按需分配与操作极致高效的统一。节点结构定义StackNodedatalink每个StackNode包含数据域data与指针域link,节点在堆区动态生成,彼此通过指针串联形成单向逻辑链,支持灵活扩容与缩容。StackNode栈顶指针锚定toptop指针直接指向链表头节点(首元结点),而非尾部,保证入栈与出栈操作无需遍历链表,时间复杂度恒定为常数级别。top→head入栈·头插法linktoptop新节点生成后,其link指向当前top,随后top更新指向新节点,完成栈顶更迭,操作高效稳定。O(1)出栈·头删法toptoptop→link暂存当前top节点数据,top顺移至top→link,释放旧节点内存,完成状态回退,避免内存泄漏。O(1)COMPARATIVEANALYSIS顺序栈与链栈的工程选型对比顺序栈与链栈在内存布局与操作开销上呈现显著的互补特征。工程选型需综合考量数据规模的先验可知性、CPU缓存友好度以及内存碎片容忍度,不存在绝对的优劣之分。栈的物理实现维度深度对比评估维度顺序栈(SeqStack)链式栈(LinkedStack)内存布局连续物理内存,CPUCache命中率极高离散堆内存,节点间存在指针跳跃,缓存不友好容量管理需预设初始容量,满载时触发O(N)级扩容按需动态分配,理论容量无上限,无扩容惩罚空间开销仅数据本身与少量控制变量,空间利用率高每个节点需额外存储指针域,存在结构性内存冗余内存碎片大块连续内存分配与释放,不易产生外部碎片高频细粒度new/delete,极易引发堆区内存碎片化顺序栈胜在缓存友好与空间紧凑,链栈胜在容量弹性与无扩容阻断CHAPTER02队列的基本概念与存储实现公平调度与FIFO秩序的底层捍卫者Queue·DataStructure队列的逻辑结构与FIFO特性队列通过分离插入端与删除端,构建了严格的先进先出时序秩序,是进程调度与数据包缓冲等公平排队系统的理论基石。01双端操作限制:入队仅限队尾进行,出队仅限队头进行,彻底屏蔽了中间节点的随机干预能力EnQueue/DeQueue02FIFO时序保障:最早进入的元素必然最先被处理,停留时间与入队顺序严格正相关,确保调度公平性First-In-First-Out03核心术语界定:Front指向当前可出队元素,Rear指向最新入队元素或后继空位,空队列时两者状态重合Front/Rear04现实场景映射:银行叫号系统、超市收银排队、打印机任务缓冲池,均是FIFO特性在物理世界的直接投影调度·缓冲·排队QueueADTSpecification队列的抽象数据类型(ADT)规范队列的ADT契约明确了数据流入与流出的单向通道属性。通过分离队头与队尾的控制接口,确保了数据吞吐的单向性,为上层应用提供了标准化的缓冲与调度抽象。01入队操作EnQueue(Ex)FIFO入口在队尾追加新元素,需校验队列是否已满,若满则触发溢出处理或阻塞等待,维持FIFO秩序的入口。该操作是数据进入队列的唯一通道,确保元素按到达顺序排队。时间复杂度O(1)队尾指针移动02出队操作DeQueue(E&x)消费端出口移除队头元素并通过引用返回其值,需拦截空队列的非法读取,是数据消费端的核心出口。该操作保证最先进入的元素最先离开,实现严格的先进先出语义。时间复杂度O(1)队头指针移动03访问队头getFront(E&x)优先级预判在不改变队列结构的前提下,读取当前排队最靠前的元素,常用于任务调度前的优先级预判。该操作允许查看即将处理的元素而不影响队列状态,支持非破坏性查询。只读访问非破坏性04状态查询接口边界护栏IsEmpty()用于消费端防错,IsFull()用于生产端限流,两者共同构成了队列安全运行的边界护栏。这些状态检查是预防越界访问和保证操作原子性的基础机制。IsEmpty()IsFull()安全预检QueueAnalysis顺序队列的'假溢出'现象剖析在朴素的一维数组队列实现中,Front与Rear指针的单向递增特性会导致已出队的空闲空间无法被复用。当Rear触碰物理边界时,即使逻辑上仍有容量,也会引发"假溢出",造成严重的内存浪费。01指针单向漂移:每次入队Rear加1,每次出队Front加1,两者如同在数组上滑动的窗口,只能向右推进,无法自动折返02空间不可复用:Front左侧的区域虽然物理上为空,但由于指针无法回退,这部分已释放的内存彻底沦为"死区",无法接纳新元素03Rear==maxSizeFront>0假溢出触发:当Rear==maxSize时,系统判定队列已满并拒绝入队,但此时Front>0,实际可用容量被严重闲置04O(N)O(1)数据整体平移的代价:为缓解假溢出,若将剩余数据整体搬移至数组头部,需耗费O(N)时间复杂度,彻底破坏了队列O(1)操作的优越性Chapter15·CircularQueue破局之道:循环队列的模运算设计循环队列通过引入取模运算(ModuloOperation),在逻辑上将一维数组的首尾无缝闭合成环。这一数学映射以极低的计算开销彻底消灭了假溢出现象,实现了物理空间的100%循环利用。01逻辑成环映射将一维数组[0,maxSize−1]的下一个位置定义为0,构建出首尾相接的虚拟环形跑道,打破线性边界的桎梏虚拟环02入队指针推进rear=(rear+1)%maxSize,利用取模运算的周期性,使指针到达物理末尾时自动折返至起始端rear%03出队指针推进front=(front+1)%maxSize,队头指针同样遵循环形轨迹,确保消费端持续追踪最新逻辑起点front%04O(1)性能捍卫取模运算仅需极少量CPU指令周期,完美替代O(N)级数据平移操作,守住队列操作的时间复杂度底线O(1)CircularQueue·ConditionAnalysis循环队列的队空与队满判定条件由于循环队列中Front与Rear指针的环形追逐特性,'队空'与'队满'在指针相对位置上存在二义性冲突。工程上通常采用'牺牲一个存储单元'的策略,以微小的空间代价换取状态判定的无歧义性。状态判定·基础队空条件front==rear队头与队尾指针重合,环形跑道上无任何有效数据驻留。空状态状态判定·核心队满条件作"隔离带"。牺牲一槽替代方案·计数引入计数器增设整型变量count记录当前元素个数,count==maxSize即为满,彻底释放被牺牲的存储单元。零浪费替代方案·标记引入布尔标签增设tag标志位,入队置1出队置0,当front==rear且tag==1时判定为满。1bitLinkedQueue·链式存储链式队列的结构设计与操作实现链式队列通过维护独立的队头与队尾指针,结合单链表的头删与尾插操作,构建了无容量上限的FIFO通道。其离散存储特性天然免疫了顺序队列的假溢出与扩容烦恼。01双指针拓扑front指针指向链表头节点(出队端),rear指针指向尾节点(入队端)。两指针协同工作,形成清晰的数据流向控制,确保队列操作的有序性与高效性。front→rear02入队(尾插法)新节点挂载至rear→link,rear指针平滑后移至新节点。无需移动任何既有元素,在常数时间内完成队列延伸,是链表结构的核心优势体现。O(1)Enqueue03出队(头删法)暂存front→link首元结点数据,front顺移并释放旧节点内存。操作仅涉及指针调整,无需批量数据迁移,保持出队操作的高效稳定。O(1)Dequeue04无界弹性容量依托堆区动态内存分配,链队列理论上无容量上限。彻底消除顺序队列的IsFull()校验、扩容重分配与数据迁移开销,实现真正的弹性存储。∞DynamicLINKEDQUEUE链队列的边界条件与异常处理链队列在极端状态切换(如由非空转为空)时,存在尾指针悬空的致命隐患。严谨的指针重置逻辑是防止野指针引发内存崩溃、确保系统长期稳定运行的最后一道防线。01带附加头节点设计frontrear初始化时创建不存储有效数据的头节点,front与rear均指向该节点,统一了空队列与非空队列的插入逻辑。02最后一个元素出队的危机front->link==rearrear当front->link==rear时,出队操作不仅释放唯一数据节点,更导致rear指针失去合法目标。03尾指针强制重置rear=front检测到最后一个元素出队后,必须显式执行rear=front,将尾指针拉回附加头节点,消除野指针隐患。04内存泄漏防御deletefree每次出队操作必须严格配对delete或free指令,防止高频吞吐场景下堆内存被迅速耗尽。CHAPTER03栈的经典应用场景剖析从语法解析到状态回溯的算法利器SCENARIO01场景一:符号匹配与语法检查利用栈的LIFO特性,可以完美解决嵌套结构的对称性校验问题。左符号入栈等待,右符号出栈比对,栈的最终空状态即为结构合法性的唯一判定标准。左符号压栈策略遍历表达式,凡遇(、[、{等左向界定符,一律无条件压入栈中,构建待匹配的期望序列,为后续配对检测建立完整的数据基础。PUSH右符号弹栈比对遇右向界定符时,检查栈是否为空,弹出栈顶元素,校验两者是否属于同类型合法配对,确保嵌套结构的层次一致性。POP异常中断机制出现"栈空遇右符"或"类型不匹配"时,算法立即终止并返回语法错误标识,避免无效计算,快速定位问题所在位置。BREAK终态合法性判定遍历结束后执行IsEmpty()校验,栈非空则存在未闭合的孤立左符,整体判定为非法,栈空则确认所有符号均已正确匹配。VALIDAlgorithm·StackApplication场景二:逆波兰表达式(后缀表达式)求值后缀表达式通过将运算符置于操作数之后,彻底消除了括号与优先级规则的干扰。借助操作数栈的单次线性扫描,即可在O(N)时间内完成复杂算术表达式的无歧义求解。01操作数入栈规则:从左至右扫描表达式,遇到操作数(数字)直接压入操作数栈,等待后续运算符的调用02运算符触发计算:遇到运算符时,连续弹出栈顶的两个操作数,注意先弹出的是右操作数,后弹出的是左操作数(减除法不可逆)03中间结果回压:将计算得出的中间结果重新压入栈顶,作为更高层级运算的操作数,实现计算状态的逐级收敛04终态结果提取:表达式扫描完毕时,栈内必然仅存一个元素,该元素即为整个算术表达式的最终精确解ALGORITHM·STACK场景三:中缀转后缀的调度场算法调度场算法(ShuntingYardAlgorithm)利用运算符栈作为缓冲枢纽,通过严格的优先级比较与弹栈规则,将人类友好的中缀表达式无损转换为机器友好的后缀表达式。01操作数直通输出扫描中缀表达式时,遇到操作数不经过栈缓冲,直接追加至后缀表达式的输出序列末尾直接输出02左括号无条件入栈遇到'('直接压入运算符栈,作为优先级比较的物理隔离墙,阻断栈内外运算符的优先级穿透隔离墙03右括号触发清算遇到')'时持续弹出栈顶运算符并输出,直到弹出匹配的'('为止,括号本身不进入输出序列弹栈清算04优先级博弈规则遇到普通运算符,若优先级≤栈顶则持续弹栈输出,直至栈顶优先级更低或遇左括号,随后自身入栈弹栈→入栈StackFrameMechanics场景四:递归调用的底层栈帧机制递归的优雅语法背后,依赖于操作系统维护的调用栈(CallStack)。每一次函数嵌套调用都会生成包含完整上下文的栈帧,栈的LIFO特性完美契合了函数调用与返回的嵌套时序。01每个函数调用实例在栈区占据独立栈帧,封装了局部变量、传入参数、寄存器状态及函数执行完毕后的返回地址。栈帧是函数运行的完整上下文容器。StackFrame02发生递归调用时,CPU暂停当前执行流,将当前上下文打包压入系统栈,随后跳转至新函数的入口地址开辟新栈帧。压栈操作保证了嵌套调用的顺序追溯。Push03函数执行至return语句,系统弹出当前栈帧,恢复上层调用的局部变量与寄存器状态,依据保存的地址精准回溯执行流。出栈实现了调用链的逆向还原。Pop04若递归缺乏正确的终止条件或深度过大,栈帧的无限累积将迅速耗尽受限的栈区内存,触发致命的StackOverflow崩溃。这是递归算法必须防范的核心风险。OverflowStackOptimization递归的消除:从系统栈到显式模拟栈为规避系统调用栈的深度限制与上下文切换开销,可通过在堆区构建显式的数据结构栈,手动保存与恢复递归状态,将隐式的递归逻辑转化为可控的迭代循环。01状态封装设计定义结构体或类,将原递归函数中的局部变量、参数及当前执行阶段封装为状态对象,作为显式栈的元素类型状态对象02初始化与压栈将递归的初始参数构建为首个状态对象并压入显式栈,替代系统自动完成的首次函数调用首次压栈03循环弹栈与分支利用while循环驱动主流程,弹出栈顶状态,通过switch-case或条件判断模拟递归内部的分支执行流迭代驱动04子任务逆向压栈将后续状态与子任务状态按执行的逆序压入显式栈,确保下次循环时优先处理最深层子任务逆序压入APPLICATIONSCENARIO场景五:迷宫求解与深度优先搜索(DFS)在迷宫寻路与图遍历问题中,栈是深度优先搜索(DFS)与回溯算法的物理载体。它忠实记录了探索路径的历史节点,为陷入死胡同时的状态回退提供了精确的导航坐标。01路径节点压栈从起点出发,每探索到一个合法的未访问节点,将其坐标与方向信息压入路径栈,并标记为已访问以防环路。坐标+方向02死胡同触发回溯当当前节点四周均被墙壁或已访问节点封死时,触发回溯机制,执行弹栈操作退回至上一个存在未探索分支的节点。弹栈退回03栈空宣告无解若回溯过程持续进行直至路径栈为空,意味着所有可达连通域均已搜索完毕且未触及终点,严谨判定迷宫无解。连通域穷尽04空间复杂度控制DFS路径栈的最大深度等于迷宫的最长无环路径长度,相较于BFS的队列,在特定地形下具有更优的内存占用表现。最长无环路径CHAPTER04队列的扩展结构与高级应用从层级遍历到优先级调度的进阶演化APPLICATION01应用一:杨辉三角形的逐行生成与打印利用队列的FIFO特性与滚动窗口思想,可将杨辉三角的二维空间依赖降维至一维队列。通过逐行出队相加与入队,实现了空间复杂度O(N)的高效层级生成算法。01初始状态构建队列初始化压入第一行的唯一元素"1",并在每行生成前预先压入边界标识"0",作为行与行之间的逻辑分隔符,建立队列与三角结构的映射关系PUSH"0"02滚动相加生成循环执行出队操作,将当前出队元素与队头元素相加,其和即为下一行的新元素,立即将其入队。通过FIFO顺序保证计算依赖的正确性DEQ+PEEK03边界自动衍生当出队元素为行尾的"0"时,与队头下一行的首个"1"相加,自然生成下一行尾部的"1",完美契合杨辉三角两侧恒为1的边界法则0+1=104空间降维打击相较于二维数组的O(N²)空间占用,队列方案仅需维护相邻两行的数据,将空间复杂度压缩至O(N),实现内存效率的数量级提升O(N²)→O(N)DataStructures·Application应用二:优先级队列(PriorityQueue)概念优先级队列打破了传统队列严格的FIFO时序束缚,将出队权限交由元素的内在权重(优先级)决定。它是贪心算法、任务调度与图论最短路径算法的核心基础设施。DEQUEUEREDESIGN出队规则重构DeQueue操作不再移除最早入队的元素,而是全局扫描并移除当前队列中优先级最高(或最低)的极值元素。这一根本性改变使得队列行为从时序驱动转向权重驱动。O(N)ScanUNSORTEDARRAY无序数组实现底层采用无序线性表,入队O(1)直接追加,出队O(N)遍历寻找极值。这种实现适用于高频入队、低频出队的特定场景,以空间换时间。EnqueueO(1)DequeueO(N)SORTEDARRAY有序数组实现底层维持有序线性表,入队O(N)寻找插入位置以保持有序,出队O(1)直接移除端点。这种实现适用于低频入队、高频出队的场景,以时间换空间。EnqueueO(N)DequeueO(1)APPLICATIONMAP核心应用版图Dijkstra最短路径的节点选取、Huffman编码树的节点合并、OS多任务调度中的高优先级进程抢占。这些经典算法均依赖优先级队列作为核心数据结构支撑。DijkstraHuffmanSchedulerBinaryHeap优先级队列的底层实现:二叉堆简介二叉堆通过维护完全二叉树的偏序性质,在逻辑树形结构与物理数组之间建立了完美映射。它以O(logN)的均衡时间复杂度,实现了优先级队列的高效动态维护。偏序性质约束大根堆要求任意父节点的值大于等于其子节点,小根堆则相反,确保堆顶元素始终是全局的极值Max/Min物理数组映射利用完全二叉树的特性,节点i的左子节点为2i+1,右子节点为2i+2,彻底消除了树形指针的内存开销2i+1·2i+2入队上浮调整新元素追加至数组末尾,若破坏偏序性质,则持续与父节点比较并交换,直至上浮至合法位置SiftUp出队下沉调整移除堆顶极值后,将数组末尾元素移至堆顶,若破坏偏序性质,则持续与较大的子节点交换,下沉至合法位置SiftDownExtendedStructures扩展结构:双端队列(Deque)的特性与应用双端队列(Deque)解除了传统队列单端进出的限制,允许在首尾两端进行O(1)的插入与删除。它是实现滑动窗口极值优化与单调队列算法的不可或缺的核心容器。四向操作解锁同时支持push_front、push_back、pop_front、pop_back,兼具栈的单端回溯与队列的双端吞吐能力。这种灵活性使Deque成为通用性极强的基础容器,可无缝替代栈与队列的使用场景。Front+Back·O(1)物理实现方案通常采用分段连续数组或双向循环链表实现,以平衡内存连续性与动态扩容的灵活性。分段数组结构在随机访问与头部插入间取得最优权衡,是现代标准库的主流选择。STLDeque模式滑动窗口最大值维护单调递减的双端队列,队首始终为窗口最大值,窗口滑动时O(1)剔除过期元素,整体时间复杂度O(N)。该算法是LeetCode高频题型,也是实时数据流处理的核心技术。复杂度O(N)回文串校验器将字符全部压入双端队列,交替从两端弹出字符比对,若全程一致则判定为回文结构。相比栈的单向遍历,双端对称访问更直观高效,代码实现简洁优雅。PalindromeCheckProcessScheduling队列在操作系统进程调度中的应用作为操作系统资源分配的缓冲池与调度器,队列机制在解耦生产者与消费者速率差异的同时,通过多级反馈等高级策略,实现了系统吞吐量与交互响应性的精妙平衡。就绪队列管理所有获得除CPU外全部资源的进程按FIFO排入就绪队列,等待调度程序分配时间片,保障多任务环境的公平性与资源有序利用。FIFOScheduling阻塞队列挂起因等待I/O或锁资源而放弃CPU的进程,被移入特定事件的阻塞队列,事件触发时再批量唤醒并转移至就绪队列继续竞争。I/OWaitQueue时间片轮转调度就绪队列配合定时器中断,当前进程时间片耗尽后被强制剥夺CPU并重新追加至队尾,实现宏观上的并发执行假象与公平轮转。RoundRobin多级反馈队列设立多个优先级递减的队列,新进程入高优先级队,若时间片内未完成则降级入低优先级队,兼顾短作业快速响应与长作业最终执行。MLFQStrategyCHAPTER05核心特性对比与算法选型指南构建数据结构选型的底层思维范式DataStructures·Comparison栈与队列的核心

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论