【数据结构与算法设计】上机课习题四

第四章作业

一、选择题1,2,3,4,5

在这里插入图片描述
在这里插入图片描述
1.串是一种特殊的线性表,其特殊性体现在(B)
A.可以顺序存储
B.数据元素是一个字符
C.可以链式存储
D.数据元素可以是多个字

2.设有两个串p和q,求q在p中首次出现的位置的运算称为(B)
A.连接
B.模式匹配
C.求子串
D.求串长

3.设串 s1=“ABCDEFG”,s2=“PQRST”,函数con(x,y)返回x和y串的连接串,subs(s,i,j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1,2,len(s2)),subs(s1,len(s2),2))的结果串是(D)
A.BCDEF
B.BCDEFG
C.BCPQRST
D.BCDEFEF

4.假设有60行70列的二维数组a[1…60,1…70]以列序为主序顺序存储,其基地址为10000,每个元素占两个存储单元,那么第32行第58列的元素a[32,58]的存储地址为(A),注意无第0行第0列的元素。
A.16902
B.16904
C.14454
D.答案A,B,C均不对

5.设矩阵A是一个对称矩阵,为了节省存储,将其下三角部分(如图)按行序存放在一维数组B[1,n(n-1)/2]中,
在这里插入图片描述
对下三角部分中的任一元素 a i , j a_{i,j} ai,j(i<=j),在一维数组B中下标k值是(B)
A.i(i-1)/2+j-1
B.i(i-1)/2+j
C.i(i+1)/2+j-1
D.i(i+1)/2+j

二、填空题1,2,3,5,7,8

在这里插入图片描述
在这里插入图片描述

1.不包含任何字符(长度为0)的串称为(空串);由一个或多个空格(仅有空格符)组成的串称为(空白串)。
2.设s=“A;/document/Mary.doc”,则strlen(s)=(20)的“/”字符定位的位置为(3)
3.字串的定位运算称为串的模式匹配;被匹配的主串称为(被匹配的串),(子串)称为模式
5.设目标T=“abccdcdccbaa”,模式P=“cdcc”,则第(6)次匹配成功。
7.假设有二维数组A6X8,每个元素用相邻的6个字节存储,存储器按字节编址。已知A的起始存储位置(基地址)为1000,则数组A的体积(存储量)为(288B);末尾元素A57的第一个字节的地址为(1282);若按行存储,元素A14的第一个字节的地址为(1072);若按列存储,元素A47的第一个字节的地址为(1276)。
8.设数组a[1…60,1…70]的基地址为2048,每个元素占两个存储单元,若以列序为主序顺序存储,则元素a[32,58]的存储地址为(8950)

三、算法设计题3,5,7

在这里插入图片描述
3.编写基于SeqString类的成员函数reverse(),要求将当前对象中的字符反序存放

class SeqString:def __init__(self, s):self.str = sdef reverse(self):# 使用切片来反转字符串self.str = self.str[::-1]def print(self):print(self.str)# 测试代码
s = SeqString("reverse 1999")
print("Original string:", end=" ")
s.print()
s.reverse()
print("Reversed string:", end=" ")
s.print()

5.编写基于SeqString类的成员函数stringcount(str),要求统计子串str在当前对象串中出现的次数,若不出现则返回0.

class SeqString:def __init__(self, s):self.str = sdef stringcount(self, sub_str):count = 0start_index = 0while True:# 在当前对象串中搜索子串index = self.str.find(sub_str, start_index)if index == -1:breakcount += 1# 更新搜索的起始位置start_index = index + 1return count# 测试代码
s = SeqString("reverse 1999:Can you can a can as a canner can can a can")
sub_str = "can"
print("Number of occurrences of '{}' in '{}': {}".format(sub_str, s.str, s.stringcount(sub_str)))

7.已知两个稀疏矩阵A和B,试基于三元组顺序表或十字链表的存储链表编程实现A+B的运算。

class MatrixNode:def __init__(self, row, col, value):self.row = rowself.col = colself.value = valueself.right = Noneself.down = Noneclass CrossLinkedList:def __init__(self, row_num, col_num):self.row_num = row_numself.col_num = col_num# 初始化行指针和列指针self.row_heads = [None] * row_numself.col_heads = [None] * col_numdef insert(self, row, col, value):# 创建节点node = MatrixNode(row, col, value)# 插入节点到行链表if self.row_heads[row] is None or self.row_heads[row].col > col:node.right = self.row_heads[row]self.row_heads[row] = nodeelse:current = self.row_heads[row]while current.right and current.right.col < col:current = current.rightnode.right = current.rightcurrent.right = node# 插入节点到列链表if self.col_heads[col] is None or self.col_heads[col].row > row:node.down = self.col_heads[col]self.col_heads[col] = nodeelse:current = self.col_heads[col]while current.down and current.down.row < row:current = current.downnode.down = current.downcurrent.down = nodedef add(self, other):if self.row_num != other.row_num or self.col_num != other.col_num:raise ValueError("Matrix dimensions don't match")result = CrossLinkedList(self.row_num, self.col_num)for row in range(self.row_num):for col in range(self.col_num):value1 = self.get_value(row, col)value2 = other.get_value(row, col)result_value = value1 + value2if result_value != 0:result.insert(row, col, result_value)return resultdef get_value(self, row, col):current = self.row_heads[row]while current:if current.col == col:return current.valueelif current.col > col:return 0current = current.rightreturn 0def print_matrix(self):for row in range(self.row_num):for col in range(self.col_num):print(self.get_value(row, col), end=" ")print()# 测试代码
A = CrossLinkedList(3, 3)
A.insert(0, 0, 1)
A.insert(0, 2, 2)
A.insert(1, 0, 0)
A.insert(2, 0, 4)
print("矩阵A :")
A.print_matrix()B = CrossLinkedList(3, 3)
B.insert(0, 1, 5)
B.insert(1, 0, 6)
B.insert(1, 1, 7)
B.insert(2, 2, 8)
print("矩阵B :")
B.print_matrix()C = A.add(B)
print("A + B:")
C.print_matrix()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

phpstudy-Ubuntu面板(小皮面板)

Ubuntu安装脚本 :(无docker版本) wget -O install.sh https://notdocker.xp.cn/install.sh && sudo bash install.sh Ubuntu安装脚本 :(有docker版本) wget -O install.sh https://download.xp.cn/install.sh && sudo bash install.sh 参考&#xff1a;linux 完…

MB6F-ASEMI新能源专用整流桥MB6F

编辑&#xff1a;ll MB6F-ASEMI新能源专用整流桥MB6F 型号&#xff1a;MB6F 品牌&#xff1a;ASEMI 封装&#xff1a;MBF-4 最大重复峰值反向电压&#xff1a;600V 最大正向平均整流电流(Vdss)&#xff1a;1A 功率(Pd)&#xff1a;小功率 芯片个数&#xff1a;4 引脚数…

内网渗透1

&#xff08;1&#xff09;&#xff1a;问题1 windows登录的明文密码如何存储&#xff0c;存储过程是怎么样的&#xff0c;密文存在哪个文件下&#xff0c;该文件是否可以打开并查看到密文&#xff1f; 在windows的登录框中输入账号密码&#xff0c;这个登录是有一个进程的叫做…

.net6 webapi 部署到IIS

一、发布.net6 webapi 项目 1.1 visual studio 2022右键发布到文件夹。 二、增加IIS容器 2.1 控制面板 2.2 启用或关闭Windows功能 3.3 勾选Internet Information Services,点击确定进行安装 三、部署webapi到IIS 3.1 安装 dotnet-hosting-6.0.29-win.exe 3.2 创建应用…

详细解析什么是期权交易的获利方法

期权交易的获利方法 在期权交易之前进行充分的准备工作和风险评估是至关重要的。其中行情结构、策略方法、预期收益和风险评估&#xff0c;是期权交易成功的关键要素。它们能帮助我们更好地制定交易计划&#xff0c;控制风险&#xff0c;并追求稳定的利润。以下是对这四点的详…

wifi可以连接但是上不了网该怎么解决?

上网的过程中&#xff0c;我们有时候会遇到wifi可以连接但是上不了网的情况&#xff0c;打开电脑浏览器&#xff0c;显示域名解析错误。遇到这种情况&#xff0c;一般说明IP与站点的解析过程出现了错误。 在网络中的主机都是IP地址来标识的&#xff0c;如果在浏览器输入此IP地…

HR常用的人才测评工具都有哪些?

随着近年来&#xff0c;人才测评工具的普及&#xff0c;已经有许多企业从中获益&#xff0c;在线人才测评成为先进招聘方式之一。一般来说&#xff0c;人们口中的人才测评工具&#xff0c;实际上并不是各种精密的仪器&#xff0c;而是由心理学系统构成的测试理论。使用这些工具…

【数据结构】三、栈和队列:3.链栈(链栈栈的初始化,判空,进栈,出栈,读取栈顶,链栈实例)

文章目录 3.链栈3.1初始化3.2判空3.3获取栈长度3.4入栈3.5出栈3.6销毁链栈3.7读取栈顶3.8遍历输出❗3.9链栈c实例 3.链栈 链栈是运算受限的单链表&#xff0c;只能在链表头部进行操作的单链表。 链表的头指针就是栈顶&#xff0c;链头为栈顶&#xff0c;链尾为栈底。栈的链式…

BUUCTF--web(1)

1、[极客大挑战 2019]Http1 1.http报文请求&#xff1a; 1、请求行&#xff1a; 第一部分是请求方法&#xff0c;常见包括GET、POST、OPTIONS&#xff08;我目前还没有见过我是菜鸡&#xff09; 第二部分是url 第三部分是HTTP协议(http(Hypertext transfer protocol)超文本传…

打造智能语音机器人-用语音控制机器人

人工智能现已成为国家发展重大战略&#xff0c;智能语音技术作为人工智能产业链上的关键一环&#xff0c;AI应用成熟的技术之一&#xff0c;人工智能的发展也进入了一个崭新的阶段。那么打造智能语音机器人怎样实现用语音控制机器人呢&#xff1f;和小编一起来看看。 选择合适的…

hbase MultiRowRangeFilter的原理、作用和实例

MultiRowRangeFilter是HBase中的一个过滤器&#xff0c;用于在扫描操作中过滤多个行键范围 原理 MultiRowRangeFilter的原理是将多个行键范围组合成一个过滤器&#xff0c;然后在扫描操作中应用这个过滤器。当扫描器遍历HBase表的行时&#xff0c;它会检查每一行的行键是否在…

大话人工智能之(一)深度学习概念

一.机器学习 机器学习是人工智能的一个分支&#xff0c;它是通过计算的手段&#xff0c;通过大数据所产生的经验来改善计算的性能。与传统的人工向机器输入知识的操作不同&#xff0c;机器学习是从大数据中获取经验&#xff0c;通过指定的算法自身从经验中学习到所需的知识&…

jmeter之连接MySQL数据库

jmeter连接mysql数据库 mysql官网下载地址&#xff1a;MySQL :: Download Connector/J 步骤如下&#xff1a; 1、下载mysql的jar包放入到jmeter的lib/ext下&#xff0c;然后重启jmeter 链接: https://pan.baidu.com/s/1rRrMQKnEuKz8zOUfMdMHFg?pwdawfc 提取码: awfc 2、配置…

备份方式分类

备份方式是确保数据安全和业务连续性的重要措施&#xff0c;主要包括以下几种类型&#xff1a; 完全备份&#xff08;Full Backup&#xff09;&#xff1a;这是最简单的备份方式&#xff0c;它会复制所有选定的数据和系统文件。完全备份提供最全面的恢复点&#xff0c;但占用的…

B站秒杀项目学习心得

项目地址&#xff1a;B站大学 特别鸣谢&#xff1a;某大佬博客 在该项目中核心就是秒杀的实现&#xff1a;大量用户进行秒杀订单时不能超卖、同一用户不能重复抢 不能超卖在doSeckill1中通过update的排他性实现(乐观锁)。 //拿到秒殺商品TSeckillGoods seckillGoods itSecki…

华尔街幽灵的规则

华尔街幽灵规则解析 规则一:永远不要持仓待涨&#xff0c;不要等市场提醒你出错才清除掉错误仓位。 这条规则其实也就是不要通过止损出场&#xff0c;等到触发止损出场&#xff0c;那么很可能已经造成一些亏损&#xff0c;长此以往&#xff0c;亏损会不断累积&#xff0c;伤到根…

selenium入门篇(环境搭建、八大定位)

背景 Web自动化测现状 1. 属于 E2E 测试 2. 过去通过点点点 3. 好的测试&#xff0c;还需要记录、调试网页的细节 一、selenium环境搭建 一键搭建 pip3 install webdriver-helper 安装后自动的完成&#xff1a; 1. 查看浏览器的版本号 2. 查询操作系统的类型 …

本地Mysql开启远程访问(图文)

目录 1. 问题所示2. 原理分析3. 解决方法 1. 问题所示 事因是访问同事的数据库时&#xff0c;出现无法访问 出现1130 - Host ‘IT07’ is not allowed to connect to this MySQL server截图如下&#xff1a; 2. 原理分析 如果账号密码地址都正常的情况下&#xff0c;这是没开…

从 Apache Doris 到 SelectDB Cloud:云原生架构下的弹性能力揭秘

随着云时代的到来&#xff0c;越来越多企业开始在公有云、私有云乃至 K8s 容器平台构建实时数据平台。云计算基础设施的革新&#xff0c;促使着数据仓库朝着云原生的方向发展。而用户日益复杂的业务负载和降本增效的需求&#xff0c;对于系统资源的精细化管理和成本效益等方面提…

笔记:oracle报错ORA-55941

说明 在删除audsys下的表时报错 ORA-55941: 不允许对表 "AUDSYS"."CLI_SWP$233f2a8a$1$1" 执行 DML 和 DDL 操作解决方案 扩展 定期PURGE部分AUD$ 第一步针对AUDIT_TRAIL_AUD_STD设置init_cleanup每24小时执行一次. BEGIN IF NOT DBMS_AUDIT_MGMT.IS_…