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

2023-11-08

#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;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入理解数据结构——数组、矩阵 的相关文章

  • Unity3D StartCoroutine 调用一个函数,该函数什么时候返回?

    我知道Unity3D StartCoroutine调用了一个与StartCoroutine在同一线程上运行的函数 但是被调用的函数什么时候返回到原始调用者 我在互联网上查找了一个很好的 Unity3D Coroutine 示例 但找不到完整
  • SL4 AutoCompleteBox 重复筛选结果问题

    我在 AutoCompleteBox 过滤方面遇到问题 它似乎记住了之前的过滤器 例如 我输入 A 它会返回 1 项 我删除 A 并输入 Z 这应该返回 1 项 问题是它返回 A 过滤器加上 Z 的结果 我删除 Z 并输入 S 这会带回 2
  • SetWindowsHookEx 函数返回 NULL

    我正在研究 DLL 注入 但收到错误如下 挂接进程失败 87 参数不正确 目标进程和dll都是64位的 注入代码为 BOOL HookInjection TCHAR target TCHAR dll name https msdn micr
  • 检查列表是否包含另一个列表。 C#

    编辑 只是说 ContainsAllItem 中的注释解释得最好 很抱歉问这个问题 我知道以前有人问过这个问题 但我只是不明白 好的 所以我想检查一个列表是否包含另一个列表中的所有项目WITHOUT重叠 以及根据类字符串 名称变量 称为项目
  • 切换图片框可见性 C#

    为什么图片框控件的可见性属性在这里不起作用 我最初将它们设置为 false 以便在屏幕加载时它们不可见 但后来我想切换这个 我已完成以下操作 但似乎不起作用 这是一个 Windows 窗体应用程序 private void Action w
  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • 如何将pdf页面设置设置为打印属性对话框?

    大家好 我想知道如何设置 pdf 页面设置到打印属性对话框 例如 如果我的 PDF 页面设置为横向 则布局会自动显示横向而不是纵向 如果我的 PDF 页面设置为纵向 则布局会自动显示纵向 我在这个主题上做了很多研发 但没有找到任何满意的链接
  • 关闭 XDOCUMENT 的实例

    我收到这个错误 该进程无法访问文件 C test Person xml 因为它是 被另一个进程使用 IOException 未处理 保存文件内容后如何关闭 xml 文件的实例 using System using System Collec
  • 通过引用传递时取消引用指针

    当通过引用传递给函数时取消引用指针时会发生什么 这是一个简单的例子 int returnSame int example return example int main int inum 3 int pinum inum std cout
  • 为什么假设 send 可能返回的数据少于在阻塞套接字上传输的请求数据?

    在流套接字上发送数据的标准方法始终是调用 send 并写入一大块数据 检查返回值以查看是否发送了所有数据 然后再次调用 send 直到整个消息被接受 例如 这是一个常见方案的简单示例 int send all int sock unsign
  • 将 C# 反射代码移植到 Metro-Ui

    我正在尝试移植使用反射的现有 C 类 通用工厂 但我无法编译这段代码 Type types Assembly GetAssembly typeof TProduct GetTypes foreach Type type in types i
  • 特定设备的不同字体大小

    我目前正在开发通用应用程序 我需要分别处理移动设备和桌面的文本框字体大小 我找到了一些方法 但都不能解决问题 使用 VisualStateManager 和 StateTrigger 为例
  • 使用 openssl 检查服务器安全协议

    我有一个框架应用程序 它根据使用方式连接到不同的服务器 对于 https 连接 使用 openssl 我的问题是 我需要知道我连接的服务器是否使用 SSL 还是 TLS 以便我可以创建正确的 SSL 上下文 目前 如果我使用错误的上下文尝试
  • 更改其他页面的主窗口内容

    在 WPF 应用程序的主窗口中 我有一个 Badged 元素 来自材料设计 这是我的代码
  • 为什么WCF中不允许方法重载?

    假设这是一个ServiceContract ServiceContract public interface MyService OperationContract int Sum int x int y OperationContract
  • 如何不在类中实现接口的功能?

    面试时面试官问了我以下问题 但我不知道这个问题的答案是什么 请帮忙 如果我不想 我必须做什么 在我的类中实现一个函数 在接口中声明为 由我班实施 Edited 我正在使用 NET 和 C 如果有人可以提供 C 示例代码示例 那就太好了 Th
  • 如何将字符串转换为 Indian Money 格式?

    我正在尝试将字符串转换为印度货币格式 例如如果输入为 1234567 则输出应为 12 34 567 我编写了以下代码 但它没有给出预期的输出 CultureInfo hindi new CultureInfo hi IN string t
  • 为什么C语言中可以使用多个分号?

    在 C 中我可以执行以下操作 int main printf HELLO WORLD 它有效 这是为什么 我个人的想法 分号是一个 NO OPERATION 来自维基百科 指示符 拥有一大串分号与拥有一个分号并告诉 C 语句已结束具有相同的
  • c# 替代方案中 cfusion_encrypt 中填充的密钥是什么?

    我找到了从这里复制 C 中的 cfusion encrypt 函数的答案 ColdFusion cfusion encrypt 和 cfusion decrypt C 替代方案 https stackoverflow com questio
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D

随机推荐

  • Redhat6.5的云主机停在某一个状态,不能继续启动

    Redhat6 5的云主机停在某一个状态 不能继续启动 1 现象 云主机 不能启动 状态如图 2 分析及诊断 制作云主机快照 导入到virt manager环境 使用guestfish工具 移除了 ss5 尝试启动 启动成功了 移除后 et
  • Oracle中group by用法

    Oracle中group by用法 在select 语句中可以使用group by 子句将行划分成较小的组 一旦使用分组后select操作的对象变为各个分组后的数据 使用聚组函数返回的是每一个组的汇总信息 使用having子句 限制返回的结
  • sql用于判断的函数decode\case when then else语法

    简单的判断可以用decode函数 例如 如果字段a是null 值为0 如果是 值也为0 否则就是a的值 select decode a null 0 0 a from table 当需要有多个条件并列的时候 用case when then
  • 物联网技术和计算机网络技术,物联网技术下计算机网络技术专业建设探讨

    摘 要 物联网应用领域的高速扩张为高校人才培养带来新的机遇和挑战 本文论述了计算机网络技术专业开设物联网方向的必要性和可行性 研究结合学院行业资源及优势专业培养网络技术专业人才的新思路 提出融合多专业的以智慧交通 智慧物流等物联网应用为特色
  • springboot 微信小程序支付

    简单对支付封装 使用到maven 依赖 版本依照自己项目情况自行添加
  • 惠普136nw打印机清零_HP打印机清零方法(冷复位恢复出厂设置)

    一体机的 冷复位 可以将一体机内部的程序恢复到出厂时的设置 通过此操作 可以解决以下问题 随机驱动程序版本高于 V6 0 以后的一体机 连接电脑时可以通过软件查看墨水余量 这部 分一体机如果执行冷复位 会将墨水信息清除 这时将 无法识别该墨
  • 过TP保护与解除游戏驱动保护

    名称 Nakd KiAttachProcess 功能 My RecoveryHook KiAttachProcess的中继函数 参数 返回 static NAKED VOID Nakd KiAttachProcess asm mov edi
  • (9.1.1)线性代数之行列式

    1 行列式的基本公式 2 行列式的基本性质 3 行列式的求值 4 克拉默法则求解方程组 5 典型例题 1 行列式的基本公式 公式1 公式2 公式3 2 行列式的基本性质 性质1 行列式与它的转置行列式相等 性质2 互换行列式的两行 列 行列
  • Python爬虫详解

    初识爬虫 爬虫的概念 什么是爬虫 爬虫 通过编写程序 模拟浏览器上网 并抓取有价值的数据的过程 反爬虫 门户网站通过制定相应的策略或技术手段 来阻止爬虫程序对其网站数据的爬取 反反爬 爬虫程序可以采用一些技术手段 来绕过或破坏门户网站的反爬
  • JPA JPQL语句 高级分页查询

    JPA 04 JPQL JPQL 掌握 1 什么是JPQL JPQL全称Java Persistence Query Language ava持久化查询语言 JPQL 是一种可移植的查询语言 旨在以面向对象表达式语言的表达式 jpql和sq
  • 多态中虚函数同名参数不同

    案例 class A public A virtual A virtual void says int x int y void A says int x int y std cout lt lt A n class B public A
  • 时序预测

    时序预测 MATLAB实现MLP多层感知机时间序列预测 目录 时序预测 MATLAB实现MLP多层感知机时间序列预测 预测效果 基本介绍 模型特性 程序设计 学习总结 预测效果 基本介绍
  • ABP学习资源整理

    不同的编程语言都有构建Web Application的框架 比如C 中的ASP NET Core和ABP Java中的Spring Boot和Spring Cloud Python中的Django和Flask Node js中的Expres
  • 使用Gitlab一键安装包后的日常备份恢复与迁移

    Gitlab 创建备份 使用Gitlab一键安装包安装Gitlab非常简单 同样的备份恢复与迁移也非常简单 使用一条命令即可创建完整的Gitlab备份 gitlab rake gitlab backup create 使用以上命令会在 va
  • openssh升级报错configure: error: Your OpenSSL headers do not match your library. Check config.log for d

    整体的报错是这样的 checking OpenSSL library version 1010104f OpenSSL 1 1 1d 10 Sep 2019 checking whether OpenSSL s headers match
  • 挖洞思路:前端源码泄露漏洞并用source map文件还原

    0x01漏洞简介 webpack是一个JavaScript应用程序的静态资源打包器 module bundler 它会递归构建一个依赖关系图 dependency graph 其中包含应用程序需要的每个模块 然后将所有这些模块打包成一个或多
  • 关于CSS样式的层叠顺序

    CSS支持给同一元素多次设置相同的规则 这就是所谓竞争规则 浏览器会使用层叠顺序来确定一组竞争规则中生效的规则 例如 浏览器给每个元素设置默认规则 当我们给一个元素设置规则时 它会与默认规则竞争 但由于有较高的层叠顺序 所以我们设置的规则会
  • java中讲讲DataOutputStream的用法,举例?

    1 4 DataOutputStream的用法 马克 to win 一定要注意DataOutputStream 与DataInputStream必须配合使用 以便将基本数据类型 int char long String等 写入一个数据流 详
  • python构建深度神经网络(DNN)

    本文学习Neural Networks and Deep Learning 在线免费书籍 http neuralnetworksanddeeplearning com index html 用python构建神经网络识别手写体的一个总结 代
  • 深入理解数据结构——数组、矩阵

    include