当前位置: 首页 > news >正文

三元组表实现矩阵相加(数据结构)

代码:

含注释,供参考

#include <stdio.h>
#include <stdlib.h>typedef struct
{int row,col,value;//分别为行数,列数,数值
} Triple;
typedef struct
{int len;//非零数值的个数Triple data[200];
} TSMatrix;void Assigndata(TSMatrix*A,TSMatrix*B,int m,int n);//给稀疏矩阵A,B的三元表赋值
void Compare(TSMatrix*A,TSMatrix*B,TSMatrix*C,int t1,int t2);//比较A,B三元表中数据的行列,并计算
int check(Triple a,Triple b);//对a,b中的行列进行比较,返回特定数字
void Printf(TSMatrix C);//打印出C中存储的数据int main()
{int t1,t2;TSMatrix A,B,C;scanf("%d %d",&t1,&t2);//t1是矩阵A的非零项个数,t2是矩阵B的非零项个数A.len=t1;B.len=t2;Assigndata(&A,&B,t1,t2);//给稀疏矩阵A,B的三元表赋值Compare(&A,&B,&C,t1,t2);//比较A,B三元表中数据的行列,并计算Printf(C);//打印出C中存储的数据return 0;
}/*给稀疏矩阵A,B的三元表赋值*A,B:目标三元表*m,n:分别是矩阵A,B的非零项个数*/
void Assigndata(TSMatrix*A,TSMatrix*B,int m,int n)
{for(int i=0; i<m; i++)scanf("%d %d %d",&(A->data[i].row),&(A->data[i].col),&(A->data[i].value));for(int i=0; i<n; i++)scanf("%d %d %d",&(B->data[i].row),&(B->data[i].col),&(B->data[i].value));
}/*比较A,B三元表中数据的行列,并计算*A,B:目标三元表*C: 存放整合后的稀疏矩阵*t1;A三元表的数据长度*t2:B三元表的数据长度*/
void Compare(TSMatrix*A,TSMatrix*B,TSMatrix*C,int t1,int t2)
{int ind=0,temp=0,i,p;//ind 是B的下标,i 是A的下标,temp 是C的下标,p 用于代表value相加的值for(i=0; i<t1&&ind<t2; i++){switch(check(A->data[i],B->data[ind])){case 1:case 4:C->data[temp++]=A->data[i];//A的行小于B的行 或 A的行等于B的行,A的列小于B的列break;case 2:case 3:C->data[temp++]=B->data[ind++];//A的行大于B的行 或 A的行等于B的行,A的列大于B的列i--;break;case 5:p=A->data[i].value+B->data[ind++].value;if(p!=0)//若A,B矩阵中元素相加为0,删除该数据{C->data[temp++]=A->data[i];C->data[temp].value=p;//A的行等于B的行,A的列等于B的列,C->data[].value等于A,B中的数据相加}break;}}if(i==t1)//A表先遍历完{for(int i=ind; i<t2; i++){C->data[temp++]=B->data[i];}}else if(ind==t2)//B表先遍历完{for(int j=i; j<t1; j++){C->data[temp++]=A->data[j];}}C->data[temp].row=0;//便于确定输出时结束的位置
}/*对a,b中的行列进行比较*a,b:分别代表A,B中的data[]*返回特定数据1:a的行小于b的行2:a的行大于b的行3:a的行等于b的行,a的列大于b的列4:a的行等于b的行,a的列小于b的列5:a的行等于b的行,a的列等于b的列*/
int check(Triple a,Triple b)
{if(a.row<b.row)return 1;else if(a.row>b.row)return 2;else if(a.col>b.col)return 3;else if(a.col<b.col)return 4;else if(a.col==b.col)return 5;return 0;
}/*打印出C中存储的数据*C:目标三元表*/
void Printf(TSMatrix C)
{int i=0;while(C.data[i].row!=0){printf("%d %d %d\n",C.data[i].row,C.data[i].col,C.data[i].value);i++;}
}

相关文章:

三元组表实现矩阵相加(数据结构)

代码&#xff1a; 含注释&#xff0c;供参考 #include <stdio.h> #include <stdlib.h>typedef struct {int row,col,value;//分别为行数&#xff0c;列数&#xff0c;数值 } Triple; typedef struct {int len;//非零数值的个数Triple data[200]; } TSMatrix;void…...

ChinaJoy 2023微星雷鸟17游戏本震撼发布:搭载AMD锐龙9 7945HX首发8499元

ChinaJoy 2023展会中微星笔记本再次给大家带来惊喜&#xff0c;发布了搭载AMD移动端16大核的旗舰游戏本&#xff1a;雷鸟17&#xff0c;更重要的这样一款旗舰性能的游戏本&#xff0c;首发价8499元堪称当今游戏本市场中的“性价比爆款”&#xff01; 本着和玩家一同制霸游戏战场…...

各种运算符

算术运算符 1.双目运算符 */%&#xff1a;从左到右优先级依次降低 一些注意事项&#xff1a; 1若a/b都为整型那么结果也为整型&#xff0c;如果ab其中有一个为实型&#xff0c;结果则为实型 求余运算符注意事项&#xff1a; 1运算对象必须为整数 2运算结果的整数跟左边数字的…...

yolov3-tiny原理解析及代码分析

前言 从去年十一月份开始学习yolo神经网络用于目标识别的硬件实现&#xff0c;到现在已经六个月了。一个硬件工程师&#xff0c;C/C基础都差劲的很&#xff0c;对照着darknet作者的源码和网上东拼西凑的原理讲解&#xff0c;一点一点地摸索。刚开始进度很慢&#xff0c;每天都…...

深入了解Redis-实战篇-短信登录

深入了解Redis-实战篇-短信登录 一、故事背景二、知识点主要构成2.1、短信登录2.1.1、生成随机短信验证码引入maven依赖生成验证码 2.1.2、实现登录校验拦截器2.1.3、基于Redis实现短信登录2.1.3.1、发送验证码时存入Redis2.1.3.2、登录时校验验证码 2.1.4、解决状态登录刷新的…...

Mysql的锁

加锁的目的 对数据加锁是为了解决事务的隔离性问题&#xff0c;让事务之前相互不影响&#xff0c;每个事务进行操作的时候都必须先加上一把锁&#xff0c;防止其他事务同时操作数据。 事务的属性 &#xff08;ACID&#xff09; 原子性 一致性 隔离性 持久性 事务的隔离级别 锁…...

【EI/SCOPUS征稿】2023年算法、图像处理与机器视觉国际学术会议(AIPMV2023)

2023年算法、图像处理与机器视觉国际学术会议&#xff08;AIPMV2023&#xff09; 2023 International Conference on Algorithm, Image Processing and Machine Vision&#xff08;AIPMV2023&#xff09; 2023年算法、图像处理与机器视觉国际学术会议&#xff08;AIPMV2023&am…...

Go语言性能优化建议与pprof性能调优详解——结合博客项目实战

文章目录 性能优化建议Benchmark的使用slice优化预分配内存大内存未释放 map优化字符串处理优化结构体优化atomic包小结 pprof性能调优采集性能数据服务型应用go tool pprof命令项目调优分析修改main.go安装go-wrk命令行交互界面图形化火焰图 性能优化建议 简介&#xff1a; …...

K阶斐波那契数列(数据结构)

代码&#xff1a; 注意k阶斐波那契序列定义&#xff1a;第k和k1项为1&#xff0c;前k - 1项为0&#xff0c;从k项之后每一项都是前k项的和 例如&#xff1a;k2时&#xff0c;斐波那契序列为&#xff1a;0,1,1,2,3,5,8,13... k3时&#xff0c;斐波那契序列为&#xff1a;0,0,…...

【JavaEE】博客系统前后端交互

目录 一、准备工作 二、数据库的表设计 三、封装JDBC数据库操作 1、创建数据表对应的实体类 2、封装增删改查操作 四、前后端交互逻辑的实现 1、博客列表页 1.1、展示博客列表 1.2、博客详情页 1.3、登录页面 1.4、强制要求用户登录&#xff0c;检查用户的登录状态 …...

Redis 简介

文章目录 Redis 简介 Redis 简介 Redis&#xff08;Remote Dictionary Server&#xff09;&#xff0c;远程词典服务器&#xff0c;基于 C/S 架构&#xff0c;是一个基于内存的键值型 NoSQL 数据库&#xff0c;开源&#xff0c;遵守 BSD 协议&#xff0c;Redis 由 C语言 实现。…...

CS162 13-17 虚拟内存

起源 为啥我们需要虚拟内存-----------需求是啥&#xff1f; 可以给程序提供一个统一的视图&#xff0c;比如多个程序运行同一个代码段的话&#xff0c;同一个kernel&#xff0c;就可以直接共享 cpu眼里的虚拟内存 无限内存的假象 设计迭代过程 为啥这样设计&#xff1f; 一…...

接口自动化测试-Jmeter+ant+jenkins实战持续集成(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、下载安装配置J…...

最长连续序列——力扣128

文章目录 题目描述法一 哈希表 题目描述 法一 哈希表 用一个哈希表存储数组中的数&#xff0c;这样查看一个数是否存在即能优化至 O(1) 的时间复杂度 每次在哈希表中检查是否存在 x−1 即能判断是否需要跳过 int longestConsecutive(vector<int>& nums){unordered_s…...

uniapp app端 echarts 设置tooltip的formatter不生效问题以及解决办法

需求一&#xff1a; y轴数据处理不同数据增加不同单位 需求二&#xff1a; 自定义图表悬浮显示的内容 需求一&#xff1a;实现方式 在yAxis里面添加formatter yAxis: [{//y轴显示value的设置axisLabel: {show: true,formatter (value, index) > {var valueif (value > 1…...

Spring入门-技术简介、IOC技术、Bean、DI

前言 Spring是一个开源的项目&#xff0c;并不是单单的一个技术&#xff0c;发展至今已形成一种开发生态圈。也就是说我们可以完全使用Spring技术完成整个项目的构建、设计与开发。Spring是一个基于IOC和AOP的架构多层j2ee系统的架构。 SpringFramework&#xff1a;Spring框架…...

深度学习之反向传播

0 特别说明 0.1 学习视频源于&#xff1a;b站&#xff1a;刘二大人《PyTorch深度学习实践》 0.2 本章内容为自主学习总结内容&#xff0c;若有错误欢迎指正&#xff01; 1 forward&#xff08;前馈运算&#xff09;过程 通过输入相应的x和权重w&#xff08;可能涉及bais偏置…...

网络安全 Day23-mariadb数据库数据管理和备份

mariadb数据库数据管理和备份 1. 管理数据库中的库2. 管理库中的表3. 管理表中的字段(列)4. 管理表中的数据(行)5. 数据库数据备份与恢复 1. 管理数据库中的库 进入指定数据库: use 数据库名字库的增删改查 创建数据库: create database 数据库名字指定字符及创建数据库: CREA…...

Centos7 上安装 redis-dump 和redis-load 命令

一、安装rvm 1、安装GPG keys gpg2 --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDBcurl -sSL http://rvm.io/mpapis.asc | gpg2 --import - curl -sSL http://rvm.io/pkuczynski.asc | g…...

【NLP PyTorch】字符级RNN循环网络模型姓氏对应国家分类(项目详解)

字符级RNN模型姓氏对应国家分类 1 序言1 数据来源与加载1.1 数据来源1.2 数据加载2 数据预处理2.1 单个字符数据处理标准2.2 单词的张量构造3 模型创建4 模型训练5 模型检验6 模型预测7 模型部署1 序言 本文的任务主要来源于PyTorch的官方教程,即给定各国人名的数据集,你需要…...

5个实用技巧:使用Open Spectrometer Python进行光谱校准的最佳实践

5个实用技巧&#xff1a;使用Open Spectrometer Python进行光谱校准的最佳实践 【免费下载链接】open-spectrometer-python Open Source Spectrometer Python Scripts 项目地址: https://gitcode.com/gh_mirrors/op/open-spectrometer-python Open Spectrometer Python是…...

Colorful vs 其他换肤方案:为什么它是Android动态换肤的最佳选择?

Colorful vs 其他换肤方案&#xff1a;为什么它是Android动态换肤的最佳选择&#xff1f; 【免费下载链接】Colorful 基于Theme的Android动态换肤库&#xff0c;无需重启Activity、无需自定义View&#xff0c;方便的实现日间、夜间模式。 项目地址: https://gitcode.com/gh_m…...

终极Zotero插件市场:一站式插件发现与管理完全指南

终极Zotero插件市场&#xff1a;一站式插件发现与管理完全指南 【免费下载链接】zotero-addons Zotero Add-on Market | Zotero插件市场 | Browsing and installing plugins within Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-addons Zotero插件市场&a…...

SQLines数据库迁移架构解密:企业级跨平台SQL转换实战方案

SQLines数据库迁移架构解密&#xff1a;企业级跨平台SQL转换实战方案 【免费下载链接】sqlines SQLines Open Source Database Migration Tools 项目地址: https://gitcode.com/gh_mirrors/sq/sqlines 在当今多云架构和数据库异构化趋势下&#xff0c;企业面临着数据库平…...

AI智能体安全防御:从代码数据分离到多代理系统架构实践

1. 项目概述&#xff1a;当AI智能体成为攻击目标 最近和几个做AI应用落地的朋友聊天&#xff0c;大家不约而同地提到了同一个焦虑&#xff1a;模型能力越强&#xff0c;系统越复杂&#xff0c;心里反而越没底。一个能自主调用API、处理文件、联网搜索的智能体&#xff0c;一旦被…...

GF6-WFV数据FLAASH大气校正避坑全记录:参数设置、光谱响应函数选择与结果验证

GF6-WFV数据FLAASH大气校正实战指南&#xff1a;从参数优化到结果验证 当处理国产高分六号卫星WFV相机数据时&#xff0c;大气校正环节往往是整个流程中的关键瓶颈。不同于常规Landsat或Sentinel数据&#xff0c;GF6-WFV特有的波段设置和响应特性使得FLAASH参数配置充满陷阱。本…...

从零构建工业级垃圾邮件分类器:端到端实战指南

1. 项目概述&#xff1a;从零构建一个真正能用的垃圾邮件分类器你打开邮箱&#xff0c;每天收到几十封邮件&#xff0c;其中总混着几封标题耸动、内容空洞、发件人可疑的“优惠券”“中奖通知”“账户异常提醒”——它们不是广告&#xff0c;而是典型的垃圾邮件&#xff08;Spa…...

TSC打印机Java开发避坑指南:从DLL配置到中文乱码,一次讲清楚

TSC打印机Java开发避坑指南&#xff1a;从DLL配置到中文乱码&#xff0c;一次讲清楚 第一次用Java调用TSC打印机时&#xff0c;那种挫败感至今难忘。明明照着官方文档一步步操作&#xff0c;却总是卡在DLL加载失败、中文变成乱码这些看似简单的问题上。这篇文章就是把我踩过的坑…...

Balena Etcher:3步搞定镜像烧录,告别传统工具烦恼

Balena Etcher&#xff1a;3步搞定镜像烧录&#xff0c;告别传统工具烦恼 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 你是否曾为制作启动盘而烦恼&#xff1…...

UE5中用TypeScript替代蓝图:Puerts热重载实战指南

1. 为什么非得在UE5里塞进TypeScript——一个被蓝图卡住脖子的开发者的自白 我第一次在UE5项目里写完第10个“Get All Actors of Class”节点&#xff0c;拖出第7条执行引线&#xff0c;再连上第4个“Branch”判断分支&#xff0c;最后把结果塞进一个“Set Array Element”时&a…...