




已阅读5页,还剩71页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章栈与队列 堆栈的定义 3 1 1堆栈的逻辑结构堆栈 也简称栈 是一个线性表 其数据元素只能从这个有序集合的同一端插入或删除 这一端称为堆栈的栈顶 top 而另一端称为堆栈的栈底 bottom 堆栈是限定只能在表头 或表尾 进行插入和删除运算的线性表 表头 或表尾 是开放运算的栈顶 另一端是封闭运算的栈底 栈为后进先出表或先进后出表 简称LIFO Lastinfirstout 或FILO Firstinlastout 表 3 1堆栈的定义 3 1堆栈的定义 3 1 2堆栈的抽象数据类型 3 1堆栈的定义 3 堆栈的顺序存储及操作3 2 1堆栈顺序存储1 堆栈顺序存储概念堆栈占用的第一个存储单元的地址 就是堆栈的首地址 也是堆栈中栈底元素 e0 存放的位置 假设堆栈中每个数据元素占用size字节空间 top指向 top n 1 堆栈中进栈元素的栈顶元素 即栈顶元素的地址 MaxSize表示堆栈可以存储元素的最大空间 一般约定下标为0的元素空间就是栈底 这样就不再另设一变量再来记录栈底指针bottom 利用公式 location ei location e0 i size求取堆栈中元素ei的地址 但是 由于堆栈是一个受限的线性表 所以 一般情况下不作取中间数据元素的运算 3 2堆栈的顺序存储及操作 3 2堆栈的顺序存储及操作 2 堆栈顺序存储结构定义typedefstruct EType element inttop intMaxSize Stack StackS S1 S2 Stack是一个顺序存储的堆栈 其中element是一个一维数组 每个数组元素空间用于存放堆栈元素数据值 top指向堆栈栈顶元素 MaxSize记载堆栈可存储的最多数据元素 最后用Stack定义了三个堆栈 S S1 S2 3 2堆栈的顺序存储及操作 3 2 2堆栈顺序存储结构下的操作1 构造空堆栈空堆栈是指堆栈中没有一个数据元素 但数据元素的空间和堆栈结构已产生空堆栈产生后 就存在一个EType类型的数组 大小是MaxSize 表中只有存放数据元素的空间 堆栈栈顶指针设为 1 用户约定 即堆栈为空时 栈顶指针 指向 栈底空间的前面 构造空堆栈S算法 Creat viodCreatStack Stack 3 2堆栈的顺序存储及操作 2 判断堆栈是否为空所谓堆栈为空 是指堆栈中没有一个数据元素 即栈顶指针top指向数据空间的第一个位置 0下标的空间 的前面 如堆栈不空 top总是指向栈顶元素 top的值为非 1 判断堆栈S是否为空算法 IsEmpty boolIsEmpty Stack 3 2堆栈的顺序存储及操作 3 判断堆栈是否为满所谓堆栈为满 是指堆栈的所有数据空间已经全部用完 即栈顶指针top指向数据空间的最大下标位置 MaxSize 1下标的空间 如堆栈不满 top总是指向栈顶元素 top的值小于MaxSize 1 判断堆栈S是否为满算法 IsFull boolIsFull Stack 3 2堆栈的顺序存储及操作 4 返回栈顶元素的值返回堆栈栈顶元素的值 是指将top所指的堆栈元素的值取出 但是top指针不移动 当然 能够取得栈顶值的前提是栈中有元素存在 返回栈S栈顶元素的值 GetTop StatusGetTop Stack 3 2堆栈的顺序存储及操作 5 进栈 又称压入 运算进栈运算是将一新元素x存储到当前top所指的空间的 上 一个位置 即top 1的的元素空间中 进栈时 首先要判断堆栈中是否存在元素存放的空间 即先判断栈是否满 不满时 x可以进栈 否则出错 x进栈前 top指针要先做相应地移动 进栈 压入 算法 Push StatusPush Stack 3 2堆栈的顺序存储及操作 6 出栈 又称弹出 运算出栈运算是将栈顶元素取出 且将栈顶指针top向 下 移动一个位置 即取出top所指的元素 然后 top的值减1 出栈时 首先要判断堆栈中是否存在元素可取 即先判断栈是否空 不空时 可以出栈 否则出错 出栈后 top指针要做相应地移动 注意 这个算法与取栈顶元素值的算法GetTop有所不同 两个算法都可以取得栈顶指针所指的元素值 但GetTop算法取值后不会移动top指针 即栈中元素的个数不发生改变 出栈 又称弹出 算法 Pop StatusPop Stack 3 2堆栈的顺序存储及操作 3 3堆栈的链式存储及操作3 3 1堆栈的链式存储堆栈的链式存储结构的特点 是用物理上不一定相邻的存储单元来存储堆栈的元素 为了保证堆栈之间的逻辑上的连续性 存储元素时 除了存储它本身的内容以外 还附加一个指针域 也叫链域 来指出相邻元素的存储地址 动态存储空间分配方式下堆栈的数据元素的类型 typedefstruct ETypedata StackNode link StackNode 链式栈表头结点结构 typedefstruct HeadETypeHdata StackNode top ChainStack ChainStackS S1 S2 3 3堆栈的链式存储及操作 3 3堆栈的链式存储及操作 3 3 2链式栈的操作1 判断链式堆栈是否为空所谓链式堆栈为空 即栈顶指针top为NULL 如堆栈不空 top总是指向栈顶元素 某个结点 判断链式堆栈S是否为空算法 IsEmpty boolIsEmpty ChainStack 3 3堆栈的链式存储及操作 3 3堆栈的链式存储及操作 3 3 2链式栈的操作2 构造链式栈构造一个链式栈就是构造一个仅有表头结点的链表 表头结点的链接域top的值首先设为空 NULL 值 表头结点的数据域填入链式栈表头的相应数据 并返回 带回 表头结点的结点指针 构造链式栈算法 Creat viodCreatStack ChainStack 3 3堆栈的链式存储及操作 3 3 2链式栈的操作3 返回链式栈栈顶元素的值返回链式堆栈栈顶元素的值 是指将top所指的堆栈元素的值取出 但是top指针不改变 当然 能够取得栈顶值的前提是栈中有元素存在 返回链式栈S栈顶元素的值 GetTop StatusGetTop ChainStack 3 3堆栈的链式存储及操作 3 3 2链式栈的操作4 链式栈进栈运算进栈运算是将一新元素x的结点链入到链式栈中 作为链表的第一个结点 x结点进栈后 top指针就指向它 链式栈进栈算法 Push StatusPush ChainStack 3 3堆栈的链式存储及操作 3 3 2链式栈的操作5 链式栈出栈运算链式栈的出栈运算是将top指针所指的结点值取出 且将栈顶指针top指向第一个结点的直接后继结点 并将原来的第一个结点释放 出栈时 首先要判断堆栈中是否存在元素结点可取 即先判断栈是否空 不空时 可以出栈 否则出错 注意 这个算法与取栈顶元素值的算法GetTop有所不同 两个算法都可以取得栈顶指针所指的元素值 但GetTop算法取值后不会改变top指针 即栈中元素的个数不发生改变 链式栈出栈算法 Pop StatusPop ChainStack 3 3堆栈的链式存储及操作 在顺序存贮结构方式下 栈内的元素的多少往往受到堆栈MaxSize的限制 单个堆栈或因进栈元素过多造成上溢 或因进栈元素太少造成栈多数情况下不满 剩余空间又得不到充分利用 实际中 有时候我们需要同时建立多个栈 则可以将这多个栈巧妙地安排在一起 让多个栈共享同一块存储空间 这样可以高效地节约并使用这些存贮空间 现在以两个栈S1 S2共享一块连续存贮空间为例来说明这个问题 如图3 4 1所示 在同时建立两个栈的情况下 可以在内存开辟一块连续存贮空间 一个数组 存储空间的两头 数组的两端 分别为两个栈的栈底 bottom 设空间的范围为 0 MaxSize 1 则一个栈S1从下标0 S1栈栈顶 的数组元素空间向MaxSize 1下标方向延伸 而另一个栈S2从下标MaxSize 1 S2栈栈顶 的数组元素空间向0下标方向延伸 这种处理思想 就如同两栈中间有一个 活塞 一样 而这个 活塞 的厚薄表示两栈还可利用的存储空间大小 S1栈的栈空仍为S1 top 1 S2栈的栈空应为S2 top MaxSize 而且S2入栈和出栈操作时 栈顶指针S2 top的修改正好反过来 入栈前S2 top 元素出栈后S2 top 两个栈共享相邻区间的情况下 栈满的条件应是两个栈栈顶相碰的情况 二个栈栈满的条件应定义为 S1 top S2 top 1或S1 top1 1 S2 top2 3 4多个栈共享邻接空间 3 4多个栈共享邻接空间 3 4多个栈共享邻接空间 3 5堆栈的应用3 5 1检验表达式中括号的匹配exp a b c d x y x a 在匹配性检验时 从左至右的取出字符串中的每个字符 如果取出的字符是一个左括号 就将它压入堆栈 如果取出的字符不是括号字符 就再取表达式字符串中的下一个字符 如果取出的字符是一个右括号 就从堆栈中退出一个左括号 并比较这两个括号 如果取出的右括号是退出的栈顶左括号所对应的右括号 说明这两个括号匹配成功 继续取下一个字符 如果取出的右括号不是退出的栈顶左括号所对应的右括号 说明这两个括号匹配失败 结束匹配过程 并报告出错 所有字符全部从字符串中取出 表达式的最后一个字符在实际中是回车符 这里 约定为 字符 并比较后 如果全部正确匹配 堆栈中应该是空状态 如果堆栈非空 则说明还有左括号未匹配 这时也应该报告出错 3 5堆栈的应用 括号的匹配算法 Matching StatusMatching charexp 值检验表达式中括号的匹配 是表达式的结束符ch exp while ch switchofch case Push S ch break case if IsEmpty S Pop S ch if ch returnERROR break 3 5堆栈的应用 case if IsEmpty S Pop S ch if ch returnERROR break ch exp if IsEmpty S returnERROR returnOK 3 5 2表达式的求值在高级编译语言的翻译成低级语言的过程中 编译程序或解释程序要做的另一件工作就是表达式的转换 所谓表达式的转换 就是将在高级语言源程序中的表达式 转换为另一种书写顺序 以后运算时按转换后的表达再进行计算结果 表达式三种书写顺序 中缀表达式 操作数 操作符 操作数 前缀表达式 操作符 操作数 操作数 后缀表达式 操作数 操作数 操作符 如数学代数式 X Y A B C D的表达式的三种表示 中缀表达式 X Y A B C D前缀表达式 XY A BCD后缀表达式 XY ABC D 3 5堆栈的应用 假设表达式已经被书写成后缀表达式形式 并将表达式存储在一个字符串中 然后从左至右地扫描这个字符串 并利用堆栈 最终求出表达式的结果 如 后缀表达式 XY ABC D 表达式运算的算法思想 从左至右的依次从字符串中取出每个字符 若取出的字符为 字母 则是一个操作数 将其压入堆栈 否则 是一个操作符 从堆栈中退出一个值 第一个操作数 再从堆栈中退出一个值 第二操作数 将两个操作数与运算符做相应的运算 假设Operate f1 op f2 返回f1和f2进行op运算的结果 算法中 我们假设只有 加 减 乘 除四种运算符 3 5堆栈的应用 3 5堆栈的应用 后缀表达式的求值算法 Evalution voidEvalution charsuffixexp EType 3 5堆栈的应用 3 5 3背包问题求解假设有一个能容纳总体积为T的背包 另有n个体积分别是w1 w2 w3 wn个物品 现在要在n件物品中选出若干件物品恰好装满背包 求出满足要求的所有解 实现背包问题的思想是利用尝试回逆法 首先将所有的物品从从0到n 1编号 每个物品的体积值存储在一个对应的数组w中 以后物品就用物品的编号来代替 另外算法实现时 使用一个堆栈S 算法的思想 从0号物品开始顺序地选取物品 如果可以装入背包 装入后不满 则将该物品的编号进栈 堆栈中是已装入背包的物品 如果当前选取的物品k装不进去 如装入 总体积大于T 则选取下一个物品 k 1 尝试装入 如果尚未求得解 又已无物品可选 则说明上一个装入的物品不合适 就将堆栈退出一个背包编号 再从这个退出的编号的下一个编号物品尝试 每求得一组解 就输出堆栈中的所有物品编号 输出不退栈 只是遍历所有堆栈中数据 然后 再退出栈顶数据 再从当前退出的编号的下一个编号物品尝试 直到堆栈为空 无退栈数据 且达到最大编号 3 5堆栈的应用 背包问题求解算法 Knap voidKnap intw intT intn 背包体积T n个物品的体积存储在w 中 求解装满背包的所有解intk 0 do while T 0 while IsEmpty S k n 3 5堆栈的应用 3 5堆栈的应用 3 5 4地图四染色问题求解用不多于四种颜色为地图染色 使相邻的行政区不重色问题 是计算机科学中著名的定理 四染色 的典型应用 应用这个定理的思想 是以回溯的算法对一幅给定的地图染色 染色过程的思想 设当前准备试探的行政区是Di 当前准备使用的色素是Cj 从第一号行政区开始逐一染色 每一个区域逐次用色数C1 C2 C3 C4 进行试探 直到所有区域全部被染色 若用Cj色素染色Di行政区 则与周围已染色的行政区 进入堆栈的行政区 不重色 则将该区域的Cj和Di进栈 否则依次用下一色素进行试探 若出现用四种色素中的任意一种色素染色 均与已染色的相邻区域发生重色 则需修改当前栈顶的 上一个行政区 色素 即 退栈回溯 以另一种色素对退栈的行政区重新染色 实现这一算法时用一个关系矩阵r n n 来描述各区域之间的边界关系 若第i号区域与第j号区域相邻 则r i j 1 否则r i j 0 3 5堆栈的应用 3 5堆栈的应用 3 5堆栈的应用 定义堆栈的元素数据结构 typedefstruct intAreaIndex intColorIndex EType 四染色算法 MapColor voidMapColor intr intn 将地图用四种颜色染色 n个地区间的相邻关系在r数组中表示intcurrentA 1 当前准备染色的区域编号 从1号地区开始intcurrentC 1 当前准备使用的色素编号 从1号色素开始StackS 定义染色堆栈SETypex EType是堆栈元素的数据类型x AreaIndex currentA x ColorIndex currentC Push S x 1号地区以1号色素染色 并进栈CurrentA 地区编号增1 准备为新地区色 3 5堆栈的应用 while currentA n topkeep S top 保留当前栈顶指针flag true flag为真时 表示与堆栈中已染色的区域比较时未发现重色while IsEmpty S 3 5堆栈的应用 else CurrentC 准备以下一种色素重新尝试S top topkeep 从栈顶开始尝试while CurrentC 4 如果当前使用的色素或退出的栈顶使用色素超过4 说明栈顶染色不对 需退栈Pop S x CurrentC x ColorIndex 1 CurrentA x AreaIndex flag true 3 5堆栈的应用 另外一种实现染色的算法 voidMapColor intr intn inti 1 表示区域编号intj 1 表示色素intk 已染色的区域编号ints 堆栈s i j 只将色号进栈 区域编号就是堆栈数组S的下标i j 1 while ii 如相邻区不重色 进栈记下染色结果 继续对下一地区从1色起进行试探s i j i j 1 3 5堆栈的应用 else j 发生重色 用j 1色继续试探while j 4 i 变更栈顶区域的色数j s i 1 6队列的定义 3 6 1队列的逻辑结构逻辑上 队列也本应属于线性表的范畴 只是与线性表相比 它们的运算受到了严格地限制 故也称为限定性线性表 队列是一个线性表 其数据元素只能从这个线性表的一端插入 而从另一端删除 删除端称为队列的队头 front 插入端称为队列的队尾 rear 取数据时 删除 又称出队 总是从队列中front所指的位置取走数据 插入数据时 又称进队 总是在队列中rear所指的位置后面添加 取走数据与放入时的顺序恰好相同 故也称队列为先进先出表 简称FIFO Firstinfirstout 表 3 6队列的定义 3 6队列的定义 3 6 2队列的抽象数据类型 3 6队列的定义 3 7 1队列顺序存储队列顺序存储概念队列顺序存储方式 是将队列中的数据元素连续顺序地存放于存储器相邻的单元 来保证队列数据元素逻辑上的有序性 1 如果第一个存储单元总是存储的是队列中队头元素 front指针不动 就会出现每次出队一个元素 就要将队列中后面的元素全部逐个地向队头方向移动一个位置 这会产生大量数据地移动 影响算法效率 2 从逻辑上将队列空间的头尾看成是 相连 的 即0下标的存储单元与MaxSize 1下标的存储单元是相邻的 3 7队列的顺序存储及操作 3 7队列的顺序存储及操作 3 7队列的顺序存储及操作 3 7 1队列顺序存储3 在定义的队列存储空间中 留出一个数据元素的空间不用 为了保持队列空间有MaxSize 在定义数组时 设数组的大小是MaxSize 1 可以理解这个不用的空间是一个环形管中的 活塞 它总是紧邻队列中的第一个数据元素 是可以移动的 即这个空间是随着队头元素的移动而移动 另外 将队头指针作一点调整 使front指针始终指在这个不用的空间位置上 队尾指针仍然指在队列中的最后一个数据元素 如图3 7 7所示 3 7队列的顺序存储及操作 3 7队列的顺序存储及操作 2 队列顺序存储结构定义队列结构定义 typedefstruct EType element intfront intrear intMaxSize Queue QueueQ Q1 Q2 3 7队列的顺序存储及操作 3 7队列的顺序存储及操作 1 构造空队列所谓空队列是指队列中没有一个数据元素 但数据元素的空间和队列结构产生 构造空队列S算法 Creat viodCreatQueue Queue 3 7队列的顺序存储及操作 2 判断队列是否为空所谓队列为空 是指队列中没有数据元素 即队列队头指针和队尾指针指在同一个位置 即front rear 判断队列S是否为空算法 IsEmpty boolIsEmpty Queue 3 7队列的顺序存储及操作 3 判断队列是否为满所谓队列为满 是指队列的所有数据空间已经全部用完 即队列队头指针和队尾指针的关系是 front rear 1 这里 表示求余数 判断队列S是否为满算法 IsFull boolIsFull Queue 3 7队列的顺序存储及操作 4 返回队列队头元素的值返回队列队头元素的值 是将front后面一个位置的队列元素的值取出 但是front指针不移动 返回队列Q中队头元素的值 GetFront StatusGetFront Queue 3 7队列的顺序存储及操作 5 进队运算进队列运算是将一新元素x存储到当前rear所指空间的 下一个 位置 进队时 首先要判断队列中是否存在元素存放的空间 即先判断队列是否满 不满时 x可以进队列 否则出错 进队算法 EnQueue StatusEnqueue Queue 3 7队列的顺序存储及操作 5 出队运算出队运算是将队列中队头指针所指的 下一个 位置的元素取出 做法是 首先将队列队头指针front先向 下一个 位置移动 然后 取出移动后front所指的数据元素 出队时 首先要判断队列中是否存在元素可取 即先判断队列是否空 不空时 可以出队 否则出错 注意 这个算法与取队列队头元素值的算法GetFront有所不同 两个算法都可以取得队列中队头的元素值 但GetFront算法取值后不会移动Front指针 取值后队列中元素的个数也不发生改变 出队算法 DeQueue StatusDeQueue Queue 3 7队列的顺序存储及操作 3 8队列的链式存储及操作3 8 1队列的链式存储动态存储空间分配方式下队列的数据元素的类型 typedefstruct ETypedata QueueNode link QueueNode 链式队列表头结点结构定义typedefstruct HeadETypeHdata QueueNode front QueueNode rear ChainQueue ChainQueueQ Q1 Q2 3 8队列的链式存储及操作 3 8队列的链式存储及操作 3 8 2链式队列的操作1 构造链式队列 构造一个链式队列就是构造一个仅有表头结点的链表 表头结点的链接域front和rear的值首先设为空 NULL 值 表头结点的数据域填入链式队列表头的相应数据 并返回表头结点的结点指针 构造链式队列算法 CreatQueue viodCreatQueue ChainQueue 3 8队列的链式存储及操作 3 8 2链式队列的操作2 判断链式队列是否为空所谓链式队列为空 即队列指针front为NULL 判断链式队列Q是否为空算法 IsEmpty boolIsEmpty ChainQueue 3 8队列的链式存储及操作 3 8 2链式队列的操作3 返回链式队列队头元素的值返回链式队列队头元素的值 是指将front所指的队列元素的值取出 但是front指针不改变 返回链式队列Q队头元素的值 GetFront StatusGetFront ChainQueue 3 8队列的链式存储及操作 3 8 2链式队列的操作4 链式队列进队运算进队运算是将一新元素x的结点链入到链式队列中 作为链表的最后一个结点 链式队列进队算法 EnQueue StatusEnQueue ChainQueue 3 8队列的链式存储及操作 3 8 2链式队列的操作5 链式队列出队运算链式队列的出队运算是将front指针所指的结点值取出 且将队列指针front指向下一个结点 并将原来的第一个结点释放 出队列时 首先要判断队列中是否空 不空时 可以出队 否则出错 链式队列出队算法 DeQueue StatusDeQueue ChainQueue 3 8队列的链式存储及操作 3 9队列的应用3 9 1列车重排货运列车共有n节车厢 每节车厢将停放在不同的车站 假定m个车站的编号分别为1 2 3 m 贷运列车按照第m站至第1站的次序经过这些车站 车厢到达某个目的地时 为了便于从列车上卸掉尾部的车厢 就是必须重新排列车厢 使各车厢排列为 靠近车头的车厢是到达第1站 最后一站 而靠近车尾的车厢是到达m站 第一站 如在出发站时 准备发出的车厢存储在r数组中 r i 的值是车厢的编号 编号越小的 就是发往越远的车站 如 开始r中的次序是 7 4 2 5 8 9 1 6 3 那么 在发出本站前 就要将车厢重新编排 按从1到n的次序与车头相连接 当所有的车厢按照这种次序排列时 在到达每个车站时 只需卸掉最后几节车厢即可 3 9队列的应用 3 9队列的应用 列车重排为了重排车厢 需按车厢到达入轨的先后 从前至后依次检查人轨上的所有车厢 如果正在检查的车厢就是下一个满足排列要求的车厢 可以直接把它放到出轨上去 如果不是 则把它移动到缓冲铁轨上 再按输出次序要求轮到它时才将它放到出轨上 缓冲铁轨是按照FIFO 队列 的方式使用的 RearrangementTrack重排n个车厢 它最多可使用k个缓冲铁轨 如果缓冲铁轨不足 就不能成功地重排 则返回false 否则返回true 开始时创建一个指向k个队列的表头数组Q k 其中 Q i i 1 2 k 表示第i个缓冲铁轨 队列 NowOut是下一个要输出至出轨的车厢号 minH是已进入各缓冲铁轨中最小的车厢号 minQ是minH号车厢所在的缓冲铁轨 即队列编号 3 9队列的应用 列车重排RearrangementTrack调用Output和Hold两个算法 算法Output用于将当前在缓冲铁轨中 可以送到出轨的车厢送至出轨 它同时再寻找缓冲铁轨中最小的车厢编号 修改minQ和minH 算法Hold根据车厢调度规则 把某个车厢current送入一个缓冲铁轨 如果current可以成为缓冲铁轨中新的最小车厢 就修改minQ和minH 在把一节车厢移动到缓冲铁轨中时 采用如下的原则来确定应该把这节车厢移动到哪一个缓冲铁轨 这个原则可以减少缓冲铁轨的使用 车厢current应移动到这样的缓冲铁轨中 该缓冲铁轨中现有各车厢的编号均小于current 如果有多个缓冲铁轨都满足这一条件 则选择一个缓冲铁轨队尾 左端 车厢编号最大的缓冲铁轨 如果已有车厢的缓冲铁轨中 队尾车厢编号都大于current 则current选择一个空的缓冲铁轨 如果存在 进入 如果也无空缓冲铁轨 则无法调度 3 9队列的应用 列车重排算法 RearrangementTrack boolRearrangementTrack intr intn intk 车厢初始排列为r 1 n 如果重排成功返回true 否则 返回falseQueue Q newQueue k 创建k个缓冲铁轨队列HintNowOut 1 当前应该输出的车厢编号intminH n 1 缓冲铁轨中编号最小的车厢编号 目前假设为n 1intminQ minH车厢对应的缓冲铁轨编号for inti 1 i n i 重排车厢if r i NowOut 调度的车厢编号是刚刚出站的车厢编号后一个 直接输出cout 从入轨输出车厢 r i 到出轨 endl NowOut while minH NowOut 从缓冲铁轨中输出minHOutput minH minQ Q k n NowOut else 将r i 送入某个缓冲铁轨if Hold r i minH minQ Q k n Hold返回true表示送入成功returnfalse returntrue 3 9队列的应用 列车重排算法 RearrangementTrack voidOutput int 3 9队列的应用 列车重排算法 RearrangementTrack boolHold intcurrent int 3 9队列的应用 3 9 2投资组合问题企业已拥有定量资金 准备将这部分资金投资于多个项目 并且可预知可供投资的项目的资金需求及投资回报率 可是 面临的问题是由于资金有限 不可能同时投资于几个较高回报率的项目 只能从较高回报率项目和较低回报率项目中选择项目进行组合投资 以使投资回报最大化 同时不再追加资金 这样就可能产生多种组合方案 进而从多种组合方案中选择一种组合的处理 为解决此类问题 首先决定哪些项目可以组合 对于不能同时选择的投资项目称为冲突项目 然后再核算各种项目组合的资金需求总量 如某种项目组合的资金需求总量超过已拥有的定量资金 则认为该种组合不可行 如存在多个组合方案的资金需求总量都不超过已拥有的资金总量 则企业经营者再从中选择投资回报率最大化的投资组合 这类问题又称为划分子集问题 3 9队列的应用 3 9 2投资组合问题将a1 a2 an项目作为投资侯
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨境虚拟货币交易域名购买与安全防护服务合同
- 2025年绿色智慧城市综合体项目投资预算与审计服务合同
- 高端医疗器械专用航空冷链配送及保险承保合同
- 2025年环保设备生产与技术参数保密与转让协议
- 字画装裱与家居美学定制合作框架协议
- 2025年智能家居系统设计与施工总承包合同
- 2025年节能环保型绿色建材采购与应用合作协议
- 2025年度企业关键岗位人员知识产权保护及保密协议
- 2025年智能电网优化电力需求侧响应激励用电服务合同
- 2025年现代化厂房产权变更经纪合同样本下载
- 微写作 安慧作文 篇篇精彩(高考作文命题与佳作示范)第二辑
- 超超临界机组简介课件
- 《语言学教程》第 2 章 语音学与音位学1课件
- 大学辅导员常规学生工作清单一览表
- 奥维互动地图使用介绍课件
- 小学语文新课程标准最新版2022
- 疫情防控实战演练方案脚本
- 资产评估事务所投标服务方案总体工作方案评估工作关键性内容及重难点分析
- (高职)旅游景区服务与管理电子课件完整版PPT全书电子教案
- 拆卸与安装油箱加油管
- 某国有企业精细管理降本增效经验交流汇报材料企业降本增效.doc
评论
0/150
提交评论