设稀疏矩阵采用三元组顺序表存储结构,编写函数实现稀疏矩阵的转置运算B=AT(这里注意是A的T次方),已知稀疏矩阵A中的非零元三元组的排列次序是先按行下标排列,在行下标相同时按列下标

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 12:08:10

设稀疏矩阵采用三元组顺序表存储结构,编写函数实现稀疏矩阵的转置运算B=AT(这里注意是A的T次方),已知稀疏矩阵A中的非零元三元组的排列次序是先按行下标排列,在行下标相同时按列下标
设稀疏矩阵采用三元组顺序表存储结构,编写函数实现稀疏矩阵的转置运算B=AT(这里注意是A的T次方),已知稀疏矩阵A中的非零元三元组的排列次序是先按行下标排列,在行下标相同时按列下标排列,要求稀疏矩阵B中的非零元三元组的排列次序也是先按行下标排列,在行下标相同时按列下标排列.
运行后要什么输入才能得到最后结果啊?

设稀疏矩阵采用三元组顺序表存储结构,编写函数实现稀疏矩阵的转置运算B=AT(这里注意是A的T次方),已知稀疏矩阵A中的非零元三元组的排列次序是先按行下标排列,在行下标相同时按列下标
#include
#include
#include
#define OK 1
#define ERROR 0
#define MAXSIZE 12500
typedef int Status;
typedef int ElemType;

typedef struct
{
int i,j;
ElemType e;
}Triple;
typedef struct
{
Triple date[MAXSIZE+1];
int mu,nu,tu;
}TSMatrix;

Status CreatSMatrix( TSMatrix *M)
//建立三元组
{
int row,col,date,k;
printf("请输入行数列数和非零元个数\n");
scanf("%d,%d,%d",&(*M).mu,&(*M).nu,&(*M).tu);
while( M->mu nu tu > ( M->mu * M->nu ) || M->tu > MAXSIZE)
{
printf("输入不正确,请重新输入\n");
fflush(stdin);
scanf("%d,%d,%d",&M->mu,&M->nu,&M->tu);
}
(*M).date[0].i = 0;
for( k = 1; k date[k].i = row;
M->date[k].j = col;
M->date[k].e = date;
}
printf("输入非空元素组成的三元组完毕!\n");
return OK;
}
Status comp( int a, int b)
//比较两个数字的大小AddSmatrix函数使用
{
int i;
if( a < b)
i = 1;
if( a == b)
i = 0;
if( a > b)
i = -1;
return i;
}
Status AddSMatrix( TSMatrix &A, TSMatrix &B, TSMatrix *C)
//矩阵的相加
{
Triple *Ap,*Bp,*Ae,*Be,*Ch,*Ce;
if( A.mu != B.mu || A.nu != B.nu)
{
printf("\nA and B is not compared\n");
return ERROR;
}
// if( (*C).date )
// free( (*C).date );
C->mu = A.mu;
C->nu = A.nu;
Ap = &A.date[1];
Bp = &B.date[1];
Ae = &A.date[A.tu];
Be = &B.date[B.tu];
Ch = Ce = C->date;
while( Ap i ) )
{
case 1:
{
*Ce = *Ap;
Ap++;
}break;
case -1:
{
*Ce = *Bp;
Bp++;
}break;
case 0:
{
switch( comp(Ap->j,Bp->j) )
{
case 0:
{
*Ce = *Ap;
Ce->e += Bp->e;
if( !Ce->e )
Ce--;
Ap++;
Bp++;
}break;
case 1:
{
*Ce = *Ap;
Ap++;
}break;
case -1:
{
*Ce = *Bp;
Bp++;
}
}
}break;
}
}
if( Ap > Ae)
while( Bp Be)
while( Ap tu = Ce - Ch;
return OK;
}
Status Transpose( TSMatrix M, TSMatrix &T)
//采用三元组表存储表示,求稀疏矩阵M的转置矩阵T
{
int k;
T.mu = M.nu;
T.nu = M.mu;
T.tu = M.tu;
if( T.tu )
{
for( k = 1; k

设稀疏矩阵采用三元组顺序表存储结构,编写函数实现稀疏矩阵的转置运算B=AT(这里注意是A的T次方),已知稀疏矩阵A中的非零元三元组的排列次序是先按行下标排列,在行下标相同时按列下标 稀疏矩阵三元组存储结构的定义及其有关算法的实现? 稀疏矩阵如何生成相应的三元组顺序表? 用三元组表实现稀疏矩阵的转置运算二、实验内容1、问题描述:定义一个5行3列的稀疏矩阵{{0,5,0},{6,0,0},{0,9,0},{0,3,7},{8,0,0}};2、 基本要求 :(1) 、采用三元组顺序表存储表示;(2) 、显示上述 用三元组表实现稀疏矩阵的转置运算二、实验内容1、问题描述:定义一个5行3列的稀疏矩阵{{0,5,0},{6,0,0},{0,9,0},{0,3,7},{8,0,0}};2、 基本要求 :(1) 、采用三元组顺序表存储表示;(2) 、显示上述 已知A为稀疏矩阵,是从空间和时间角度比较采用两种不同的存储结构(二维数组和三元组表)完成求a【ii】之 数据结构三元组顺序表稀疏矩阵相加三元组顺序表稀疏矩阵A和B,形成新的三元组顺序表稀疏矩阵C,这个解题思路是怎样的?是否新的三元组稀疏矩阵C.MU、C.NU(矩阵的行数和列数)就是取A、B中 写出下列稀疏矩阵的三元组表 三元组顺序表的存储结构形成数据结构问题用C语言编译 稀疏矩阵的三元组表示法 数据结构问题,有一个100*90的稀疏矩阵,非零元素有10个,设元素为整型,每个整型数占2字节,则用三元组存储该矩阵时,所需的字节数是多少. 稀疏矩阵和三元组的问题假设n x n的稀疏矩阵A采用三元组表示,编写一个程序如下功能:(1)生成如下两个稀疏矩阵的三元组a和b;1 0 3 0 3 0 0 00 1 0 0 0 4 0 00 0 1 0 0 0 1 00 0 1 1 0 0 0 2(2)输出a转置 数据结构课程设计 稀疏矩阵实现与应用稀疏矩阵实现与应用要求:实现三元组,十字链表下的稀疏矩阵的下列应用.(1)稀疏矩阵的存储(2)稀疏矩阵加法(3)矩阵乘法(4)矩阵转置给出代 稀疏矩阵以三元组表输入,以通常的阵列形式输出,实现稀疏矩阵的转置,实现两个稀疏矩阵的加法运算. 采用顺序存储结构,编写算法求串S1和串S2的一个最大公共子串 采用顺序存储结构,编写算法求串S1和串S2的一个最大公共子串 解线性方程组程序编程求解线性方程组AX=B.方程组由用户随意输入给定.满足以下功能:(1)系数矩阵A是以三元组存储的稀疏矩阵.(2)采用高斯迭代法.首先判断是否满秩.用C++语言来写! 稀疏矩阵用模版实现的算法,比如输入矩阵,输出三元组怎么实现?