稀疏矩阵的应用

本文探讨了如何对使用三元组顺序表存储的稀疏矩阵进行加法、减法和乘法操作。具体展示了A和B两个稀疏矩阵的三元组表,通过这些操作得到它们的和、差和积。
摘要由CSDN通过智能技术生成

已知两个稀疏矩阵A和B采用三元组顺序表存储,
求:M= A+B、M= A-B和M= A×B。
【测试数据】

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

A的三元组表为:
(0, 2, -9)(0, 4, 5)(1, 0, -7)(1, 2, 7)(3, 1, 8)(4, 2, 9)
B的三元组表为:
(1, 0, 7)(1, 2, 7)(2, 1, 1)(3, 0, 1)(4, 4, 1)

和:在这里插入图片描述

差:在这里插入图片描述
积:在这里插入图片描述


#include <iostream>

#define M 5
#define N 5
#define MAXSIZE 25
using namespace std;
typedef struct TupNode
{
   
	int r;
	int c;
	int data;
} Tup;

typedef struct TSMatrix
{
   
	int rows;//整个矩阵的行数
	int cols;//整个矩阵的列树
	int nums;//三元组中储存的元素个数,其实就代表着矩阵中的非零元素个数
	TupNode arr[MAXSIZE];//三元组本体
} Mat;


Mat *createMat(int (&a)[M][N])//根据传进来的二维数组引用创建三元组
{
   
	Mat *mat = new Mat;
	int i, j;
	mat->cols = N;
	mat->rows = M;
	mat->nums = 0;
	for (i = 0; i < M; i++)
	{
   
		for (j = 0; j < N; j++)
		{
   
			if (a[i][j] != 0)
			{
   
				mat->arr[mat->nums].r = i;
				mat->arr[mat->nums].c = j;
				mat->arr[mat->nums].data = a[i][j];
				mat->nums++;
			}
		}
	}
	return mat;
}
Mat *createMat(Mat *mat)//根据传进来的三元组创建三元组的拷贝,若传NULL,则返回空三元组
{
   
	Mat *res = new Mat;
	res->cols = N;
	res->rows = M;
	res->nums = 0;
	if (mat)
		*res = *mat;
	return res;
}



int binSearch(Mat *mat, int r, int c, bool returnLastPos, bool *isSucc)
{
   
	int a = 0, b = mat->nums - 1;
	int mid;
	while (a <= b)
	{
   
		mid = (a + b) / 2;
		if (mat->arr[mid].r == r && mat->arr[mid].c == c)
		{
   
			if (isSucc)
				*isSucc = true;
			return mid;
		}
		else if (mat->arr[mid].r < r || 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值