算法导论第十章练习参考答案(18) - 10.1-10.4

 Exercise 10.1-1 

 Exercise 10.1-2

我们将栈命名为T和R。首先,设置T.top = 0和R.top = n + 1。实际上,栈T使用数组的第一部分,栈R使用数组的最后一部分。在栈T中,top是T中最右边的元素。在栈R中,top是R中最左边的元素。

  Exercise 10.1-3

  

 Exercise 10.1-4

 Exercise 10.1-5

 在本节给出的示例代码中,我们将忽略检查溢出和下溢错误。

  Exercise 10.1-6

enqueue操作与将一个元素压入栈1的操作相同。这个操作是O(1)。要脱离队列,从栈2取出一个元素。如果栈2是空的,对于栈1中的每个元素,我们取出它,然后将它压入栈2。最后,从栈2中取出最上面的项。在最坏的情况下,这个操作是O(n)。 

  Exercise 10.1-7

下面是一种使用两个队列实现堆栈的方法,其中pop需要线性时间,push需要常数时间。第一种方法是在推入每个元素时将其排队。然后,要执行弹出操作,需要从一个队列中取出每个元素,并将其放置在另一个队列中,但在最后一个元素之前停止。然后,返回原始队列中剩下的单个元素。 


Exercise 10.2-1 

 

要在常量时间内插入一个元素,只需将其添加到头部,使其指向旧的头部,并使其成为头部。要删除一个元素,需要线性时间,因为如果不从头开始扫描,就无法获得指向列表中前一个元素的指针。

 Exercise 10.2-2

PUSH(L,x)操作与LIST-INSERT(L,x)完全相同。POP操作设置x等于L.head,调用LIST-DELETE(L,L.head),然后返回x。 

Exercise 10.2-3 

 

除了表头,还要保留一个指向链表最后一个元素的指针。要排队,请在列表的最后一个元素之后插入元素,并将其设置为新的最后一个元素。要退出队列,请删除列表的第一个元素并返回它。 

 Exercise 10.2-4

首先让L.nil.key = k,然后像往常一样运行LIST-SEARCH ',但是去掉x\neq L.nil的检查。 

 Exercise 10.2-5

要插入,只需在常量时间内,在当前头之前插入列表。要搜索,从头部开始,检查元素是否为正在检查的当前节点,检查下一个元素,依此类推,直到列表末尾或找到元素。在最坏的情况下,这可能需要线性时间。要删除,再次使用线性时间,因为没有办法立即到达该元素
在当前元素之前,而不是从头部开始并沿着列表。 

 Exercise 10.2-6

设L1是包含S1元素的双链表,L2是包含S2元素的双链表。我们实现UNION的方式如下:设置L1.nil.prev.next = L2.nil.next和L2.nil.next.prev = L1.nil.prev,使得L1的最后一个元素紧跟着L2的第一个元素。然后设置l1.nil.prev = L2.nil.prev.和L2.nil.prev.next = L1.nil,所以L1.nil是包含L1和L2中所有元素的双链表的哨兵。 

 Exercise 10.2-7

Exercise 10.2-8 

为了方便,我们将单独存储L.head的指针值。一般来说,A XOR (A XOR C) = C,所以一旦我们知道了一个指针的true值,就可以通过应用该规则恢复所有其他指针(即L.head)。假设列表中至少有两个元素,第一个元素将包含第二个元素的精确地址。 

要反转列表,我们只需要将头元素作为L.nil之前的“最后”元素,而不是在此之后的第一个元素。这可以通过设置L.head =L.nil.np XOR L.head来实现。 


 Exercise 10.3-1

多数组版本可以是L = 2,

一个数组的版本可以是L = 4,

Exercise 10.3-2 

Exercise 10.3-3

分配Allocate对象只返回一些单元格的索引,它保证在它们被释放之前不会再给出索引。prev属性不会被修改,因为内存管理器只使用next属性,这取决于调用allocate的代码是否使用它认为合适的prev和key属性。

 Exercise 10.3-4

对于ALLOCATE-OBJECT,我们将跟踪数组中下一个可用的位置,并且它总是比存储的元素数量大1。对于FREE-OBJECT(x),当释放一个空间时,将大于x的每个元素的位置减1,并相应地更新指针。这需要线性时间。 

  Exercise 10.3-5

 

参见算法COMPACTIFY−LIST(L, F) 


 Exercise 10.4-1 

 

注意,数组中的索引8和2没有出现,而且实际上并不表示有效的树。 

Exercise 10.4-2

 

 参见算法PRINT-TREE。

Exercise 10.4-3 

 

Exercise 10.4-4 

 

 参见算法PRINT-TREE。

Exercise 10.4-5

 参见INORDER-PRINT ' (T)算法。

Exercise 10.4-6 

我们的两个指针分别是左和右。对于节点x, x. left将指向x最左边的子节点,如果x有兄弟节点,则x.right将指向紧邻其右侧的兄弟节点,否则则指向x的父节点。我们的布尔值b,存储在x处,b = depth(x) mod 2。要到达节点的父节点,只需一直跟随“右”指针,直到布尔值的奇偶校验发生变化。要查找节点的所有子节点,首先查找x. left,然后跟踪“右”指针,直到布尔值的奇偶校验发生变化,忽略最后一个节点,因为它将是x。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2869061.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

超越 GPT4,科大讯飞,再出王炸!

哈喽,大家好! 去年,科大讯飞星火大模型上线,给大家推荐了一波,演示了其强大的功能,不少小伙伴都立马申请体验了一把,也有私信说非常强大,工作效率提高不少,支持国产大模…

Java代码基础算法练习-判断字符串是否为回文-2024.03.16

任务描述: 回文串是指一个正读和反读都一样的字符串,比如“level”或者“noon”等。要求输入 一个字符串,判断此字符串是否为回文。(注:设字符串长度小于20) 任务要求: package suanfa;import…

一文全面了解向量数据库

1. 什么是向量数据库?** 首先,我们需要理解什么是向量? 向量是基于不同特征或属性来描述对象的数据表示。每个向量代表一个单独的数据点,例如一个词或一张图片,由描述其许多特性的值的集合组成。这些变量有时被称为“…

3.2_5 内存映射文件

文章目录 3.2_5 内存映射文件(一)传统的文件访问方式(二)内存映射文件(Memory-Mapped Files) 总结 3.2_5 内存映射文件 (一)传统的文件访问方式 磁盘的存储是以块为单位的&#xff0…

2024年腾讯云4核8G12M服务器可容纳多大访问量?

腾讯云轻量4核8G12M服务器配置446元一年,646元12个月,腾讯云轻量应用服务器具有100%CPU性能,系统盘为180GB SSD盘,12M带宽下载速度1536KB/秒,月流量2000GB,折合每天66.6GB流量,超出月流量包的流…

【JVM】GCRoot

GC root原理 通过对枚举GCroot对象做引用可达性分析,即从GC root对象开始,向下搜索,形成的路径称之为 引用链。如果一个对象到GC roots对象没有任何引用,没有形成引用链,那么该对象等待GC回收。 可以作为GC Roots的对…

Jacobian matrix雅可比矩阵

参考链接 https://www.youtube.com/watch?vwUF-lyyWpUc&listPLEZWS2fT1672lJI7FT5OXHJU6cTgkSzV2&index6

python二级备考(2)-简单应用题

第1套 使用turtle库的turtle. right()函数和turtle.fd()函数绘制一个菱形,边长为200像素,4个内角度数为2个60度和2个120度 键盘输入一组人员的姓名、性别、年龄等信息,信息间采用空格分隔,每人一行,空行回车结束录入&a…

电子供应链的未来:电子元器件采购商城的洞察

电子供应链的未来将受到数字化技术、智能化制造和全球化贸易等趋势的深刻影响。在这一背景下,电子元器件采购商城将发挥越来越重要的作用,并提供以下洞察: 数字化转型: 电子元器件采购商城将更加注重数字化转型,通过引…

使用数字人SadTalker创建免费AI主播

很有趣的GitHub项目SadTalker,它能够将一张图片跟一段音频合成一段视频,看起来毫无违和感,如果不仔细看,甚至很难辨别真假,预计未来某一天,一大波网红即将失业。 虽然这个项目目前的主要研究方向还是基于c…

【软考高项】七、信息技术发展之存储、数据库、信息安全

1、存储知识点 存储类型分:封闭式(小型机)和开放式(服务器) 其中开放式又分内置和外挂存储(直连DAS、网格FAS(NAS/SAN)) 2、数据库知识点 数据结构模型: …

2核4G云服务器能支持多少人同时访问?性能测评来了

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问?5M带宽下载速度峰值可达640KB/秒,阿腾云以搭建网站为例,假设优化后平均大小为60KB,则5M带宽可支撑10个用户同时在1秒内打开网站,并发数为10,经阿腾云测试&a…

Java中为什么只有值传递?

Java中为什么只有值传递? 对于对象参数而言,实际参数传递给形式参数的只是一个内存地址,让形式参数也指向实际参数所指向的地址,传递的值的内容是对象的引用。 为什么会是这样?让我慢慢为你讲解。 对于Java的传递类…

引领国产洗碗机全面反超,是时候重新认识方太了

文 | 智能相对论 作者 | 佘凯文 2024AWE如期而至,方太作为全球领先的高端厨电专业制造商与创新引领者参与其中,并在开幕当天召开了以“Hi-tech,Hi life”为主题的2024春季新品发布会。 发布会上,方太公布了由国家工业信息安全发…

实验室管理系统 |基于springboot框架+ Mysql+JSP技术+Tomcat的实验室管理系统 设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 用户后台功能模块 用户后台管理 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunw…

【01】htmlcssgit

01-前端干货-html&css 防脱发神器 一图胜千言 使用border-box控制尺寸更加直观,因此,很多网站都会加入下面的代码 * {margin: 0;padding: 0;box-sizing: border-box; }颜色的 alpha 通道 颜色的 alpha 通道标识了色彩的透明度,它是一个 0~1 之间的取值,0 标识完全…

创业新手看过来!四招助你开启成功之旅

如果你每个月的薪资仅有几千块,还背负着债务的重担,家中的老少都期盼着你为他们撑起一片天,那么,你每日都可能为了如何打破这一困境而焦虑不安。不过,请稍安勿躁,今天我将为你提供四个建议,或许…

【C语言】浮点型在内存中的存储

文章目录 例题引入剖析原因浮点型的二进制转换(M)正负号之分(S)科学记数法(E)关于 S E M 在内存中的存储存取浮点型时的情况讨论 例题解析整形存储为浮点型并输出浮点型存储为整形并输出 在我的上一篇博客中…

[De1CTF 2019]SSRF Me ---不会编程的崽

这个题更偏向于代码审计。耐住性子慢慢理解,还是挺简单的。 很直接哦,就给源码。这么看不好看,得去pycharm里修正一下格式 #放在pycharm里CtrlAltL将代码格式化一下 1 #! /usr/bin/env python2 #encodingutf-83 from flask import Flask4 fr…

浅谈如何自我实现一个消息队列服务器(1)——需求分析

文章目录 一、什么是消息队列?二、当下主流的消息队列(MQ)三、自我实现一个消息队列服务器的前期准备——需求分析3.1 核心概念3.2 broker server 核心概念3.2.1、虚拟主机(Virtual Host)3.2.2、交换机(Exchange)3.2.2…