版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DataStructures·CoreChapter栈与队列原理、应用与实战数据结构核心章节·32课时精讲H数据结构与算法SYLLABUSCourseOutline课程大纲01栈的基础与实现栈的定义、ADT、顺序/链式实现、溢出处理02栈的典型应用括号匹配、表达式求值、递归消除、浏览器历史03队列的基础与实现FIFO特性、循环队列、双端队列、优先队列04队列的应用场景进程调度、缓冲池、BFS遍历、消息队列05对比总结与拓展栈vs队列、选型策略、单调栈/队列简介5核心章节20+核心知识点栈→队列基础→应用→总结渐进式学习路径数据结构与算法·栈与队列专题STACK&QUEUECHAPTER01栈的基础与实现LastIn,FirstOut的线性表DATASTRUCTURESDATASTRUCTURESTACK·LIFO栈的定义与LIFO特性栈是限定仅在表尾(栈顶)进行插入和删除操作的线性表,其核心特性为后进先出(LIFO),这一约束使其在需要逆序处理或回溯的场景中具有不可替代的优势。栈顶操作约束栈顶(Top)是唯一允许插入和删除操作的位置,栈底(Bottom)固定不动,所有操作均在栈顶完成。后进先出(LIFO)最后入栈的元素最先被弹出,最早入栈的元素必须等到上面所有元素弹出后才能访问。受限的线性表栈是线性表的特例,数据元素间的逻辑关系与线性表相同,但操作规则受到严格限制,属于受限的数据结构。DATASTRUCTUREADTDEFINITION栈的抽象数据类型(ADT)栈的ADT封装了LIFO行为的核心操作集,包括InitStack、Push、Pop、GetTop等,为不同存储实现提供了统一接口,是算法设计中调用栈功能的契约基础。栈的基本操作7OPERATIONS操作名称参数功能描述InitStack(&S)栈S构造一个空栈StackEmpty(S)栈S若S为空返回TRUE,否则FALSEStackLength(S)栈S返回S的元素个数Push(&S,e)栈S,元素e将e压入栈顶Pop(&S,&e)栈S,元素e弹出栈顶元素并用e返回GetTop(S,&e)栈S,元素e用e返回栈顶元素值ClearStack(&S)栈S将S清为空栈以上操作构成栈的完整ADT,Push/Pop时间复杂度均为O(1)。IMPLEMENTATIONSTACK·DATASTRUCTURE顺序栈的实现顺序栈采用动态数组存储,通过base和top两个指针管理栈状态,支持动态扩容以应对空间不足,是内存连续分配下最高效的栈实现方式。01结构体定义typedefstruct{ElemType*base;ElemType*top;intstacksize;}SqStack;base指向栈底,top指向栈顶元素的下一个位置stacksize记录当前分配的最大容量02入栈操作Pushif(S.top-S.base>=S.stacksize){//栈满,需realloc扩容S.base=(ElemType*)realloc(...);S.top=S.base+S.stacksize;S.stacksize+=INCREMENT;}*S.top++=e;//完成入栈栈满时通过realloc动态扩容,扩容后需重新定位top指针时间复杂度O(1),均摊分析下扩容代价可忽略empty栈空S.top==S.base正常状态base<top<base+size栈满top-base==stacksizeDATASTRUCTURELINKEDSTACK链式栈的实现链式栈以链表为存储载体,栈顶即链表头,入栈出栈均为O(1)且无容量上限,适用于元素数量不可预知或频繁波动的场景,牺牲少量指针开销换取无限扩展能力。链式栈结构示意topdatanext→datanext→dataNULLPush=头插Pop=删头栈顶指针与操作等价:链式栈的栈顶指针top指向链表第一个节点,入栈操作等价于头插法,出栈操作等价于删除头节点,时间复杂度均为O(1)。节点结构与开销:每个节点包含data域和next指针,内存按需分配,不存在栈满溢出问题,但存在额外的指针存储开销。适用场景:链式栈适合元素数量变化剧烈、无法预估最大容量的场景,如递归深度不确定的算法运行时栈模拟。顺序栈vs链式栈顺序栈固定容量,随机访问O(1),存在溢出风险链式栈动态扩展,无容量限制,额外指针开销EXCEPTIONHANDLINGSTACK·DYNAMICRESIZE栈的溢出与动态扩容栈上溢与下溢是两类典型异常,顺序栈通过realloc倍增策略实现均摊O(1)扩容,现代操作系统更引入守护页机制在硬件层面捕获溢出,保障系统稳定性。01栈上溢·Overflow栈满时继续执行Push操作将触发上溢。解决方案是调用realloc将容量扩大一倍,均摊后每次Push的时间复杂度仍为O(1)。02栈下溢·Underflow栈空时继续执行Pop操作将触发下溢。应在操作前调用StackEmpty进行检查,避免未定义行为或程序崩溃。03守护页机制·GuardPageLinux内核为线程栈分配前后守护页(GuardPage),当栈指针越界访问守护页时触发缺页异常,从而在硬件层面检测并阻止栈溢出攻击,保障系统安全。TECHNIQUEDATASTRUCTURES两栈共享空间技术两栈共享空间让两个栈共用同一数组,分别从两端向中间生长,仅当top1+1==top2时才判定溢出,相比各自独立分配可将空间浪费降至最低,是嵌入式与资源受限环境的经典优化。相向生长的双栈结构栈1的base在数组下标0处,top1向右增长;栈2的base在数组末尾,top2向左增长,两者相向而行。精确溢出判定条件栈满条件为top1+1==top2,而非任一栈达到数组一半,因此只要两栈总元素数不超过数组长度就不会溢出。互补波动的最佳场景适用于两个栈使用量呈互补波动的场景,如表达式求值中的操作数栈与运算符栈,可节省近50%的预留空间。SharedArrayLayoutStack1→FREE←Stack2base1=0top1top2base2=n−1top1+1==top2?溢出判定top[i]+1==top[j]top[i]+1==top[j]→两栈顶相邻即满,无需各自预留半长~50%预留空间节省O(1)push/pop时间1数组分配次数CHAPTER02栈的典型应用从算法题到系统级实战括号匹配表达式求值递归消除浏览器历史02SDATASTRUCTURESSTACK·APPLICATIONApplication应用一:括号匹配算法括号匹配利用栈的LIFO特性天然适配嵌套结构验证:左括号入栈记录期待匹配的符号,右括号触发栈顶比对,最终栈空即合法。该算法时间复杂度O(n),是编译器词法分析与IDE语法高亮的核心组件。算法核心步骤01遍历入栈—遍历字符串每个字符:若为左括号'('、'['、'{',直接压入栈中等待后续匹配。02弹栈比对—若为右括号')'、']'、'}',弹出栈顶元素并检查是否与当前右括号配对,不配对立即返回false。03终态验证—遍历结束后检查栈是否为空:空则所有括号已正确匹配,非空则存在未闭合的左括号。forchinstring:ifch=='('→stack.push(ch)ifch==')'→stack.pop()=='('?returnstack.isEmpty()工程应用场景编译器语法分析编译器在语法分析阶段调用括号匹配验证源代码结构合法性,错误时精确定位缺失括号位置。IDE实时语法高亮IDE实时语法高亮与自动补全依赖括号匹配状态机,帮助用户快速发现嵌套错误。复杂度分析O(n)时间复杂度O(n)空间复杂度(最坏)ALGORITHM应用二:中缀表达式转后缀中缀转后缀算法通过运算符栈管理优先级与结合性,将人类可读的中缀表达式转为机器易算的后缀形式,消除了括号与优先级歧义,是计算器、SQL解析器、公式引擎的通用预处理步骤。01操作数输出与运算符入栈操作数直接输出到结果序列;运算符与栈顶比较优先级,高于栈顶则入栈,否则持续弹出栈顶至结果直到可入栈。02括号处理规则左括号无条件入栈作为优先级屏障;右括号触发连续弹出栈顶至结果,直到遇到左括号并将其丢弃。03收尾弹出与结果生成遍历结束后将栈中剩余运算符全部弹出至结果,所得序列即为等价的后缀表达式,可直接用栈求值。ALGORITHM应用三:后缀表达式求值后缀表达式求值仅需一个操作数栈,遇数入栈、遇符弹二算一压回,全程无优先级判断与括号处理,时间复杂度严格O(n),是硬件计算器、虚拟机指令执行与数据库查询计划求值的理想模型。01扫描与分类从左向右扫描后缀表达式:遇到操作数直接压入操作数栈;遇到二元运算符则弹出栈顶两个操作数进行运算。5→502运算与压回运算结果立即压回栈中作为后续运算的操作数,保证中间结果始终在栈顶可供下一次运算使用。3+5→803终止与验证扫描结束时栈中恰好剩一个元素,即为整个表达式的计算结果;若栈中元素多于一个则表达式格式有误。42STACKAPPLICATION·O(n)STACKFRAME应用四:函数调用栈帧运行时栈以栈帧为单位管理函数调用上下文,每帧保存局部变量、参数、返回地址与寄存器现场,调用时压帧、返回时弹帧,LIFO顺序完美匹配嵌套调用的自然语义,是程序执行模型的物理基础。栈帧组成要素帧结构组成:每个栈帧包含函数参数、局部变量、返回地址(caller下一条指令)、保存的寄存器(如ebp/rbp)和对齐填充。高效分配机制:栈帧大小在编译期确定(除变长数组外),运行时通过移动栈指针sp/rsp一次性分配,效率极高。溢出与安全溢出检测机制:递归过深或局部数组过大会耗尽栈空间触发StackOverflow,现代OS通过守护页检测并终止进程防止exploits。安全编程实践:应避免大数组放栈上,改用堆分配;递归改迭代或使用尾递归优化减少栈帧累积。APPLICATIONDATASTRUCTURES应用五:递归消除与栈模拟递归本质是隐式使用系统栈,将其转化为显式栈迭代可避免栈溢出、支持断点续算、便于性能剖析。转化关键是识别递归状态(参数+返回点)并用栈帧结构体显式保存,配合循环替代隐式调用链。01栈帧封装与迭代替代递归转迭代的核心是将每次递归调用的参数与返回点封装为栈帧对象,压入显式栈中,用while循环替代隐式调用。02斐波那契优化实践斐波那契递归存在指数级重复计算,改用栈+备忘录(HashMap)可将时间复杂度降至O(n),同时避免栈溢出。03经典算法的非递归版本汉诺塔、树遍历等经典递归算法均可通过显式栈实现非递归版本,在嵌入式或栈空间受限环境中尤为必要。APPLICATIONSTACK·CASESTUDY应用六:浏览器前进与后退浏览器用两个栈分别管理后退历史和前进历史,新导航清空前进栈保证历史线性,后退/前进操作在两栈间转移URL,LIFO语义完美映射用户对"最近访问"的直觉预期,是栈在交互设计中的典范应用。BACK后退栈BackStackhome.html→list.html→detail.html←TOPFORWARD前进栈ForwardStackempty新导航时清空操作流转移后退Back.pop()→Forward.push()→显示新栈顶前进Forward.pop()→Back.push()→显示新栈顶新链接Back.push(current)→Forward.clear()双栈结构设计后退栈(BackStack)按访问顺序存储URL,栈顶为当前页面;前进栈(ForwardStack)存储用户后退过的页面。新导航清空前进栈用户点击新链接时,当前页压入后退栈,前进栈清空——因为新路径使旧前进历史失效,保证浏览历史的线性一致性。对称的前进后退操作后退操作:后退栈弹出栈顶压入前进栈,显示新栈顶页面;前进操作:前进栈弹出栈顶压入后退栈,完全对称实现。PSEUDOCODEbackStack.push(current);current=forwardStack.pop()SSTACK·APPLICATIONAPPLICATIONAPPLICATIONSEVEN应用七:编辑器的撤销与重做撤销/重做采用命令模式+双栈架构:每个编辑操作封装为含execute/undo方法的命令对象,撤销栈记录正向操作,重做栈记录已撤销操作,新编辑清空重做栈保证历史一致性,该模式可扩展为宏录制与协作同步。编辑操作→命令封装每次编辑(插入、删除、格式化)封装为Command对象,包含execute()和undo()方法,压入Undo栈。撤销→弹出&逆操作用户触发撤销时,Undo栈弹出命令执行undo(),同时将该命令压入Redo栈;重做则反向操作。新编辑→清空重做栈新编辑操作发生时Redo栈清空,因为新的修改使原有重做历史不再有效,保证操作序列的线性一致性。双栈架构示意UNDOSTACKInsert("hello")Delete(3,5)Bold(0,5)▲栈顶(最新操作)REDOSTACKUnbold(0,5)▲栈顶(最近撤销)撤销:Undo.pop()→exec.undo()→Redo.push()重做:Redo.pop()→exec.execute()→Undo.push()新编辑:Redo.clear()(历史失效)命令模式可序列化为日志,支持宏录制与协作同步(OT/CRDT基础)现代GUI编辑器标配架构:VSCode/GoogleDocs/FigmaAPPLICATIONSTACK·DFS应用八:迷宫求解与DFS迷宫求解的本质是图的深度优先搜索,栈隐式维护了从起点到当前探索点的路径,走不通时自动回溯至上一个分叉点,无需显式记录父节点,栈的LIFO语义与DFS的回溯需求天然同构。1初始化与循环探测从起点开始,将起始坐标压入栈;循环弹出栈顶位置,标记为已访问,检查是否到达终点。2分支探索与自动回溯若未到终点,将所有未访问的相邻可通行格子压入栈;若无相邻可走格子,栈自动回溯到上一个有分支的位置。3路径提取栈中元素从底到顶恰好构成一条从起点到当前位置的路径,找到终点时栈内容即为解路径,无需额外存储。核心洞察:栈的LIFO弹出顺序≡DFS的回溯路径—数据结构语义与算法需求天然匹配CHAPTER03队列的基础与实现FirstIn,FirstOut的线性表DATASTRUCTURES队列的定义与FIFO特性队列是限定在队尾插入、队头删除的线性表,核心特性为先进先出(FIFO),这一约束使其在需要保序处理、公平调度或缓冲解耦的场景中成为首选数据结构。QueueStructureFRONT(dequeue)a₁a₂a₃a₄···REAR(enqueue)FIFO出队←→入队Enqueue:在队尾(Rear)插入新元素Dequeue:在队头(Front)移除元素指针维护:front与rear双指针协同01端点约束与操作规则队头(Front)是删除操作端,队尾(Rear)是插入操作端,元素从队尾进入、从队头离开,严格保持进入顺序。02先进先出(FIFO)语义先进先出保证最早入队的元素最先被处理,适用于任务调度、消息传递等需要公平性或时序一致性的场景。03实现方式与假溢出队列同样可用数组或链表实现,但数组实现需特殊处理"假溢出"问题,引出循环队列这一重要优化结构。ABSTRACTDATATYPEQUEUE·ADT队列的抽象数据类型(ADT)队列ADT以Enqueue/Dequeue为核心操作对,配合Front/Back查询与Empty/Size状态检查,封装了FIFO行为的完整契约,为循环队列、链式队列、优先队列等变体提供统一抽象基础。队列的基本操作操作名称参数功能描述InitQueue(&Q)队列Q构造一个空队列QueueEmpty(Q)队列Q若Q为空返回TRUEQueueLength(Q)队列Q返回Q的元素个数EnQueue(&Q,e)队列Q,元素e将e插入队尾DeQueue(&Q,&e)队列Q,元素e删除队头元素并用e返回GetHead(Q,&e)队列Q,元素e用e返回队头元素值ClearQueue(&Q)队列Q将Q清为空队列EnQueue/DeQueue时间复杂度均为O(1)(链式或循环数组实现)DATASTRUCTURESLINKEDQUEUE链式队列的实现链式队列以单链表为载体,front/rear分别指向头尾节点,入队尾插、出队头删均为O(1),无容量限制且无需移动元素,是通用场景下最安全的队列实现,仅当缓存局部性至关重要时才考虑数组方案。结构示意frontreardatanextdatanextdatanextdataNULL出队DeQueue入队EnQueueO(1)O(1)O(1)入队/出队∞无容量上限0无需移动元素01双指针维护链式队列维护front和rear两个指针,入队在rear后追加新节点并更新rear,出队删除front所指节点并更新front。02悬空指针防护当队列仅剩一个元素时,出队后需同时将front和rear置为NULL,避免rear指向已释放内存造成悬空指针。03性能特征链式队列无容量上限,适合元素数量不可预知的场景;缺点是每次操作需malloc/free,频繁分配可能影响性能。易错点单元素出队时,必须同时置空rear,否则后续入队操作将写入已释放的内存地址,导致未定义行为。DATASTRUCTURESQUEUE循环队列:解决假溢出循环队列将数组首尾逻辑相连,通过取模运算使rear/front循环移动,彻底解决普通数组队列的假溢出问题。牺牲一个存储单元区分空满状态,换取O(1)入队出队与零内存浪费,是操作系统内核与嵌入式系统的首选队列实现。A0B1C2D34567frontrear+1capacity=8size=4线性数组表示ABCD∅∅∅∅01234567假溢出与循环思想普通数组队列出队后头部空间闲置,rear到达数组末尾即报满,即使前面有空位也无法入队,称为假溢出。循环队列将数组视为环形缓冲区,rear=(rear+1)%capacity实现循环移动,头部空闲空间可被后续入队复用。空满判断与容量队空条件:front==rear;队满条件:(rear+1)%capacity==front,因此最大元素数为capacity−1。牺牲一个单元是为了区分队空与队满(否则两者条件相同),也可用size变量或标志位避免浪费,但取模法最简洁高效。DATASTRUCTURE双端队列(Deque)双端队列放宽了队列的单端限制,允许两端插入删除,兼具栈与队列能力。其循环数组实现支持O(1)四端操作,是滑动窗口算法、工作窃取调度器及撤销历史管理的理想容器。四端操作Deque支持push_front/pop_front/push_back/pop_back四种O(1)操作,可同时作为栈(只用一端)或队列(两端分工)使用。循环数组实现循环数组实现的Deque需注意两端指针的取模运算,扩容时需重新排列元素以保持逻辑连续性。典型应用滑动窗口最大值(单调Deque)多线程工作窃取(本地栈+全局Deque)浏览器历史(双端导航)←frontabcdback→push/pop均可在前端(front)与后端(back)执行,时间复杂度O(1)H数据结构与算法PRIORITYQUEUEQueue&Heap优先队列与堆实现优先队列以优先级而非入队顺序决定出队次序,二叉堆实现使插入/删除均为O(logn)、查最值O(1),是贪心算法、事件驱动模拟与实时调度系统的核心组件,内部不保证全序仅维护堆性质。堆结构与操作完全二叉树存储:二叉堆是完全二叉树,父节点优先级始终高于子节点(最小堆/最大堆),用数组紧凑存储,父子索引关系为i→2i+1/2i+2。上浮与下沉调整:插入时先放末尾再上浮(heapifyUp),删除堆顶时用末尾替换再下沉(heapifyDown),两次调整均为O(logn)。Min-Heap示意257911814典型应用场景图与编码算法:Dijkstra算法用最小堆选取当前距离最小的未访问节点,保证每次扩展最优路径;Huffman编码用最小堆合并频率最低的子树。系统与调度:操作系统进程调度器用优先队列管理就绪进程,高优先级任务抢占CPU;实时系统按截止时间排序保证硬实时约束。ComplexityO(1)查询最值O(logn)插入/删除O(n)建堆(buildHeap)核心要点优先队列不是排序结构——它只保证堆顶是最值,内部元素无序。这一特性使其在只需反复取最值的场景中远优于全排序。Chapter04队列的应用场景从内核调度到分布式系统QDataStructuresAPPLICATIONQueueApplication·OSScheduling应用一:操作系统进程调度OS调度器以队列为核心组织就绪进程,FIFO保证公平但响应差,多级反馈队列通过动态优先级调整兼顾交互任务低延迟与批处理任务高吞吐,是现代通用OS调度策略的事实标准。FIFOFIFO单队列调度FIFO调度将进程按到达顺序排入单一队列,简单公平但对短作业不利(护航效应),交互式体验差。短任务排在长任务之后,平均等待时间随负载增加急剧恶化。MLFQ多级反馈队列机制多级反馈队列设置多个优先级队列,新进程入最高优先级队,每级时间片递增;进程用完本级时间片未完成则降入下一级队列,形成动态优先级梯度。BALANCE延迟与吞吐的兼顾策略该策略使短作业快速完成、长作业逐步降级但仍能获得CPU,同时允许I/O等待后的进程提升优先级以保持交互响应性,实现延迟与吞吐的最优折中。APPLICATIONQUEUE·FIFO应用二:打印任务与IO缓冲打印缓冲是FIFO队列的经典工程体现:高速生产者与低速消费者之间插入队列解耦时序差异,保证任务按提交顺序处理且不丢失,同一模式复用于磁盘IO、网络发包、日志写入等所有异步流水线场景。01FIFO缓冲机制用户提交打印任务时入队,打印机作为消费者循环出队处理,队列平滑了提交速率与打印速率的巨大差异。02满队列策略:背压vs丢弃若队列为满可选择阻塞提交者(背压)或丢弃新任务(有损),前者保数据完整性,后者保系统响应性,依业务需求选择。03系统解耦的通用范式同一缓冲模型应用于磁盘IO调度(电梯算法)、网络socket发送缓冲、日志异步写入,是系统解耦的通用范式。NETWORK应用三:网络协议栈中的队列网络协议栈各层均依赖队列缓冲突发流量:网卡RX/TX环、IP转发队列、TCP重传队列、应用消息队列构成多层缓冲体系,配合AQM算法实现拥塞控制,是互联网可靠传输的物理基础。多层缓冲体系01网卡环形缓冲网卡驱动使用环形缓冲区(RingBuffer)接收数据包,避免中断风暴;内核协议栈再经SKB队列传递给上层socket。02主动队列管理路由器出口队列在拥塞时采用RED/WRED算法,在队列未满前概率性丢包触发TCP拥塞避免,比TailDrop更公平高效。可靠性保障03TCP重传机制TCP维护未确认报文的重传队列,超时未收到ACK则重传,保证可靠交付;乱序到达时重组队列恢复原始字节流。04应用消息队列应用层消息队列(如Kafka/RabbitMQ)进一步解耦服务,支持持久化、重试、死信队列,构建分布式系统的弹性通信骨架。L1网卡RingBufferL3IP转发队列L4TCP重传队列L7应用消息队列GraphAlgorithmsALGORITHM·BFS应用四:图的广度优先搜索(BFS)BFS以队列为核心实现逐层扩展,保证首次访问某节点时经过的边数最少,是无权图最短路径、连通分量检测、社交网络N度关系查询的标准算法,时间复杂度O(V+E)。算法流程起点入队并标记已访问;循环出队当前节点,将其所有未访问邻居入队并标记,直到队列为空。最短路径保证队列保证了节点按距离起点的层数递增顺序被访问,因此第一次到达目标节点时的路径即为最短路径。与DFS的对比与DFS(栈/递归)相比,BFS空间复杂度可能更高(最坏O(V)),但在需要最短路径或层级信息的场景中不可替代。COMPLEXITYTime:O(V+E)Space:O(V)DataStructure:QueueMIDDLEWAREAPPLICATION05应用五:消息队列中间件消息队列将单机FIFO扩展为分布式、持久化、多消费者的通信基础设施,实现服务解耦、流量削峰与最终一致性,是微服务架构的神经网络,其核心抽象仍是入队/出队操作的分布式版本。时空解耦与故障隔离生产者将消息入队(Topic/Queue),消费者从队列拉取或推送获取消息,两者无需直接调用,实现时空解耦与故障隔离。分区并行与顺序平衡Kafka通过分区(Partition)实现队列的水平扩展与并行消费,每个分区内严格有序,跨分区弱有序,平衡了吞吐与顺序需求。消费组负载均衡消费组(ConsumerGroup)机制允许多个消费者协同处理同一队列,每条消息只被组内一个消费者处理,实现负载均衡与弹性伸缩。MQArchitecturePRODUCERSP-1P-2P-3BROKER/TOPICPartition0Partition1Partition2CONSUMERGROUPC-1C-2C-3消息流:Producer→TopicPartitions→ConsumerGroup05CHAPTER05对比总结与拓展融会贯通,举一反三D数据结构COMPARISON栈与队列核心差异对比栈与队列同为受限线性表,但操作约束方向相反:栈单端LIFO适配回溯与嵌套,队列双端FIFO适配保序与缓冲。理解这一根本差异是正确选型的前提,混淆两者会导致算法错误或性能劣化。StackvsQueue
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- RAG技术问答平台设计课程设计
- 2026年注册结构工程师考试《结构设计原理》历年真题汇编及答案
- 人教版《道德与法治》八年级下册(部编版)第四单元《7.2自由平等的追求》教学设计
- 身份证信息提取系统实践课程设计
- 2026年税务师考试《税收筹划》专项训练试题及答案
- 英语三年级下册Lesson21IntheRestaurant.教案
- 高中历史 第三单元 古代中国的科学技术与文学艺术 第10课 充满魅力的书画和戏曲艺术新课教学设计1 新人教版必修3
- 习作:我做了一项小实验 教学设计语文三年级下册统编版
- 一年级语文下册 课文 4 语文园地六教学设计 新人教版
- 湖南省桑植县贺龙中学高中音乐鉴赏教案
- 气瓶检测站安全应急预案
- 拆除工程应急预案
- 中建施工临时用电施工方案
- 体育学院《体育教学论-体育教学目标》课件
- 电磁场与电磁波(第五版)PPT完整全套教学课件
- 盘锦市住宅区物业管理服务收费等级标准实用文档
- 水准点、导线点复测记录自动公式表
- GA 883-2018公安单警装备强光手电
- 七年级班主任开学第一课(班会)课件
- 相机采购报价单
- 公路互通立交设计某市政院ppt讲解
评论
0/150
提交评论