深入理解数据结构——数组、矩阵

#include <iostream>
#include <string>

using namespace std;

typedef int EType;

struct SYMMATRIX {
	EType *elem;//通过创建获取相应空间
	int bounds;
};

//矩阵相加算法
int AddMatrix(SYMMATRIX A, SYMMATRIX B, SYMMATRIX &C) {

	if (A.bounds != B.bounds)
		return 1;//AB阶数不同,不能相加
	for (int i = 1; i < A.bounds; i++)
	{
		for (int j = 1; j < i; j++) {
			C.elem[i * (i - 1) / 2 + j - 1] = A.elem[i * (i - 1) / 2 + j - 1] +
				B.elem[i * (i - 1) / 2 + j - 1];
		}
	}

	return 0;

}

//三元顺序表

struct Triple {
	int row, col;
	EType value;
};
struct TSMatrix {
	Triple* elem;
	int rows,clos;
	int temps;
	int MaxSize;
};

//创建稀疏矩阵
void CreateTSMatrix(TSMatrix& A, int maxsize) {
	A.MaxSize = maxsize;
	A.elem = new Triple[A.MaxSize];
	A.rows = 0;
	A.clos = 0;
	A.temps = 0;
}

//三元数组转置算法
void TransposeTSMatrix(TSMatrix& A, TSMatrix& B) {
	B.rows = A.clos;
	B.clos = A.rows;
	B.temps = A.temps;
	if (B.temps) {
		int k = 1;
		for (int col = 1; col <= A.clos; col++) {
			for (int i = 1; i <= A.temps; i++) {
				if (A.elem[i - 1].col == col) {
					B.elem[k - 1].row = A.elem[i - 1].col;
					B.elem[k - 1].col = A.elem[i - 1].row;
					B.elem[k - 1].value = A.elem[i - 1].value;
					k = k + 1;
				}
			}
		}
	}
}

//行逻辑链表
struct Cnode {
	int c;
	EType v;
	Cnode* next;
};

struct RLSMatrix {
	
	Cnode* r;
	int rows, cols;
	int temrs;//非零元的个数
};

void CreateRLSMatrix(RLSMatrix &A,int r ,int c) {
	A.rows = r; A.cols = c; A.temrs = 0;
	A.r = new Cnode[A.rows];
	for (int i = 1; i <= A.rows; i++)
		A.r[i - 1].next = NULL;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南叔先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值