数据结构--稀疏矩阵转置(列序递增算法)的c语言实现(超详细注释/实验报告)

本文详细介绍了如何使用C语言实现稀疏矩阵的三元组表表示法,并通过列序递增算法完成转置操作。实验涉及矩阵压缩存储、转置逻辑和空间时间复杂度分析,适合理解稀疏矩阵和三元组表操作的读者。

数据结构–稀疏矩阵转置(列序递增算法)的c语言实现(超详细注释/实验报告)

知识小回顾

稀疏矩阵是指矩阵中大多数元素为零的矩阵。从直观上讲,当非零元素个数低于总元素的30%时,这样的矩阵为稀疏矩阵。

稀疏矩阵的三元组表表示方法

对于稀疏矩阵的压缩存储,采取只存储非零元素的方法。由于系数矩阵中非零元素aija_{ij}aij的分布没有规律,因此,在存储非零元素值的同时,还必须存储该非零元素在矩阵中所处的行号和列号的位置信息,这就是稀疏矩阵的三元组表表示方法。

实验题目

  1. 稀疏矩阵采用三元组顺序表的存储结构
  2. 能够实现按列序递增进行转置
  3. 输出矩阵转置前后的三元组

实验目的

  1. 了解压缩存储的基本原理
  2. 了解稀疏矩阵的三元组表的压缩存储方法
  3. 熟悉三元组表表示的稀疏矩阵运算的实现

实验要求

  1. 稀疏矩阵的三元组表示法及三元组表示的矩阵的转置的实现
  2. 三元组表示的稀疏矩阵相关运算的实现

实验内容和实验步骤

1.需求分析

 实现用户输入一个三元组表,程序将其转置并输出。

2. 概要设计

 设计一个函数实现转置操作,在主函数中让用户输入并输出结果。

3. 详细设计

导入库并定义三元组和三元组表的基本类型

#include<stdio.h>
#define MAXSIZE 20
typedef struct
{
   
   
    int row,col,val;//非零元素的行下表和列下标以及值
}TriNode;

typedef struct
{
   
   
    TriNode data[MAXSIZE+1];//非零元素的三元组表。data[0]未用
    int m,n,len;//矩阵的行数、列数及非零元素个数
}TriTable;

稀疏矩阵列序递增转置的函数

//稀疏矩阵列序递增转置
void Transpose(TriTable A,TriTable *B)s
{
   
   
    int i,j,k;
    B->m=A.n;
    B->n=A.m;
    B->len=A.len;//行数、列数交换,长度还都是相等的
//    printf("%d %d %d\n",B->m,B->n,B->len);
    if(B->len>0)
    {
   
   
        j=1;//j为辅助计数器,记录转置后三元组在三元组B中的下标值
        for(k=1;k<=A.n;k++)
        {
   
   
            for(i=1;i<=A.len;i++)
            {
   
   
                if(A.data[i].col==k)
                {
   
   
     
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值