应用题1

这道题知识点参考书97页-100页稀疏矩阵的相关知识。
知识点:

  • 什么是稀疏矩阵三元组线性表十字链表。
  • 什么是转置(运算)

如果一个矩阵中绝大多数元素数值为0,我们称其为稀疏矩阵
一般稀疏矩阵有两种表示方法,三元组线性表十字链表

  • 三元组线性表
    我们先来讲讲三元组线性表是如何表示稀疏矩阵的
    举个例子,这里有个稀疏矩阵,长这个样子

    矩阵中零太多了,如果每个元素都存储就太占用存储空间了,就这么几个数(分布无规律),我们记一下非零元素的行数,列数和数值就可以了,所以三元组表示法中的三元就分别是行数row,列数col元素数值value(row,col,value)。如果使用顺序存储结构来存储稀疏矩阵的三元组,可以得到稀疏矩阵的一种压缩存储表达方式--三元组顺序表。
    所以,图中第0行第4列的元素1就表示为(0,4,1)
    如果以行为主序存储,这个稀疏矩阵的三元组顺序表则表示为
    (0,4,1),(2,1,-1),(3,4,-2),(4,0,5),(5,2,7)

  • 十字链表法
    再来说说十字链表法,当矩阵进行运算后,元素数值常常发生较大改动,如果要对元素数值进行删除,插入,修改等工作再用顺序存储会很不方便,所以十字链表法诞生了。
    首先对矩阵的每行每列都分别创建一个不带头节点的单链表。每个非零元素都对应一个节点,因为该节点同时存在与它所在的行链表和列链表中,所以两个链表在此节点形成交叉。为了管理链表,用rowhead数组存储行链表头指针,用colhead数组存储列链表头指针,每个节点对应一个非零元素,存储该非零元素的三元组(row,col,value)以及该节点的行后继指针和列后继指针。
    具体案例:

  • 转置:大家之前学过线性代数吧,我们知道矩阵有很多运算加法,减法等。题干中提到的转置也是一种我们之前学过的矩阵运算。
    转置矩阵的实现就是将原有矩阵M进行行元素和列元素的调换,使得得到的转置矩阵N(j,i)=M(i,j)

以上就是这道题的全部知识点了。

了解完考点这道题目就很好写了
1.根据给出的三元组线性表画出稀疏矩阵M

2.画出M的十字链表

3.转置M得到N
(其实可以省去这一步,直接将M的非零元素行列交换,再按照顺序重新排列即可)
写出N的三元组线性表

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

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

相关文章

API初探

一、API 侦察 要开始 API 测试,您首先需要尽可能多地了解有关 API 的信息,以发现其攻击面。 首先,您应该确定 API 端点。这些是 API 接收有关其服务器上特定资源的请求的位置。例如,请考虑以下请求:GET GET /api/books HTTP/1.1 Host: example.com 此请求的 API 端点是 。…

iPhone越狱版和免越狱版iMessages群发,苹果手机iMessages短信,iMessages推信群发实现原理

Apple公司全线在mac os与ios两个操作系统上内置了FaceTime与iMessage两个应用。完美替代运营商的短信与电话。并且FaceTime与iMessage的帐号不仅仅与Apple ID 绑定,同时也与使用这Apple ID的手机号码绑定,这样的漏洞自然给无孔不入的群发垃圾信息商们提供了后门。这样iPhone的…

KMP-字符串

虽然我们可以根据板子题:兔子和兔子同样实现线性字符串匹配的速度。 但是也有更好的算法KMP,其更高效快捷。 先看看什么是KMP算法? 例如 S = ababccabab 与T = abacabab我们来看next数组 ,依次S[i]与T[i]进行比较,若S[i]!= T[i] 我们只需要读取next[i]数组下的内容;例如…

vxe-table 树表格拖拽排序,支持拖拽到空节点,直接拖拽成子级

vxe-table 树表格拖拽排序,支持拖拽到空节点,直接拖拽成子级;通过 row-drag-config.isToChildDrag 启用便捷拖拽成子节点,拖拽的同时按住 Ctrl 键可以自动拖放到该节点的子级 官网:https://vxetable.cn/通过 row-drag-config.isToChildDrag 启用便捷拖拽成子节点,拖拽的同…

敏捷开发:敏捷项目可视化管理-ScrumBoard(Scrum板)使用介绍

ScrumBoard(Scrum板)介绍 ScrumBoard(Scrum板)是敏捷项目管理中使用的可视化工具,用于跟踪和监控冲刺阶段的任务进度。 主要通过可视化的看板来管理工作,它可视化了敏捷开发中的工作流程、任务状态、团队角色。 Scrum 团队在各种 Scrum 会议(Sprint计划会,每日站会,Spri…

autofac aop扩展 通过接口

class Program { static void Main(string[] args) { //创建一个容器 ContainerBuilder builder = new ContainerBuilder();//注册UserService builder.RegisterType<UserService>().As<IUserService>() .Enable…

autofac aop扩展

class Program { static void Main(string[] args) { //创建一个容器 ContainerBuilder builder = new ContainerBuilder();//注册UserService builder.RegisterType<UserService>().As<IUserService>() .Enable…

英语期末视听说大二

语雀链接:https://www.yuque.com/g/wushi-ls7km/mlng6f/hr8zqdt6rygushag/collaborator/join?token=fK0acakbepENTOZJ&source=doc_collaborator# 《英语期末视听说大二》

935. 骑士拨号器

象棋骑士有一个独特的移动方式,它可以垂直移动两个方格,水平移动一个方格,或者水平移动两个方格,垂直移动一个方格(两者都形成一个 L 的形状)。象棋骑士可能的移动方式如下图所示:我们有一个象棋骑士和一个电话垫,如下所示,骑士只能站在一个数字单元格上(即蓝色单元格)。…

ThreeJs-06详解灯光与阴影

一.gsap动画库 1.1 基本使用和原理 首先直接npm安装然后导入 比如让一个物体,x轴时间为5s旋转同理动画的速度曲线,可以在官网的文档找到1.2 控制动画属性与方法 当然这里面也有一些方法,动画完成,动画开始等一些属性也可实现停止动画随时,给到一个变量双击暂停以及恢复二.…