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

第四章作业

一、选择题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,一经查实,立即删除!

相关文章

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

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

.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;而是由心理学系统构成的测试理论。使用这些工具…

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;和小编一起来看看。 选择合适的…

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、配置…

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;对于系统资源的精细化管理和成本效益等方面提…

IDEA 编码规约扫描 Code inspection did not find anything to report.

IDEA安装了Alibaba Java Coding Guidelines插件&#xff0c;却看不到规约检查结果。手动进行编码规约扫描&#xff0c;弹窗提示“Code inspection did not find anything to report.”&#xff1a; 这种情况是因为代码文件所在的目录被标记成了测试文件&#xff08;Test Source…

python3GUI--PyQt5打包心得(三)NIS Edit制作安装程序(详细图文演示)

文章目录 一&#xff0e;前言二&#xff0e;介绍三&#xff0e;下载、安装1.下载2.安装 四&#xff0e;制作安装程序四&#xff0e;验证五&#xff0e;总结 一&#xff0e;前言 传送门&#xff1a; python3GUI–PyQt5打包心得&#xff08;详细图文演示&#xff09; python3GU…

本地体验最强开源模型Llama3+Qnw(支持Windows和Mac)

一键运行大模型本地软件&#xff08;含模型&#xff09;&#xff1a;点击下载 Meta放出Llama3模型了&#xff0c;也应该是这段时间里的一个科技大新闻了。 Llama一直都是开源大语言模型的领头羊驼。 而Llama3又是所有羊驼中最新的领头羊。 可以简单地来看一下官方的对比数据…

SnapGene Mac v5.3.1中文激活版:综合性分子生物学软件

SnapGene Mac是一款功能全面、操作便捷的综合性分子生物学软件&#xff0c;专为Mac用户打造。它集成了DNA序列编辑、分析、可视化和团队协作等多种功能&#xff0c;为科研人员提供了一个高效、可靠的分子生物学研究工具。 SnapGene Mac v5.3.1中文激活版下载 在SnapGene Mac中&…

idea自定义配置文件的注释

打开 IntelliJ Idea 软件 依次找到 File—>Editor—>File and Code Templates 设置 Files 下的Class、Interface、Enum等 输入下面的内容 /** * description: ${NAME} * date: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} * author: author **/

如何基于Spring Boot项目从零开始打造一个基于数据库号段模式去中心化的分布式ID生成方案

一、前言 在当前系统开发过程中&#xff0c;单体架构的应用正在走向消亡&#xff0c;越来越多的应用开始分布式架构&#xff0c;在分布式架构设计过程中&#xff0c;有一个问题往往避免不了&#xff0c;就是分布式ID生成问题。 在常见解决方案中&#xff0c;有使用雪花算法或…

K8S探针分享

一&#xff0c;探针介绍 1 探针类型 livenessProbe&#xff1a;存活探针&#xff0c;用于判断容器是不是健康&#xff1b;如果探测失败&#xff0c;Kubernetes就会重启容器。 readinessProbe&#xff1a;就绪探针&#xff0c;用于判断是否可以将容器加入到Service负载均衡池…

Access2019直接将数据导入SQL Server数据库中,再直接链接回来

Access2019 的数据表等&#xff0c;除了通过 SSMA 导入数据库外&#xff0c;还可以利用access2019 自身的外部数据导出功能来达到目的。本文将详细介绍这一操作过程。 一、命令行操作阶段 1.以SA这一超级用户登录SQL Server&#xff0c;创建一个数据库&#xff0c;例如“个人…

网络安全培训对软件开发人员的重要性

微信搜索关注&#xff1a;网络研究观 阅读获取更多信息。 组织所经历的持续不断的网络威胁没有任何放缓的迹象&#xff0c;使得实现有效安全的任务变得越来越具有挑战性。 根据最新的 Verizon 数据泄露调查报告&#xff0c;2023 年高级攻击增加了 200% 以上。 IBM 数据泄露成…