程序要求:1.初始化稀疏矩阵m,使它成为不含其他任何元素的空矩阵; 2.求出稀疏矩阵m的转置矩阵并返回; 3.求出M1和M2稀疏矩阵之和并返回;4.求出M1和M2之积病返回;5按一定格式向稀疏矩阵M输入所对应的三元组线性表;6.按照一定格式输出稀疏矩阵M。 麻烦大大们尽量把注释写明白点,才学C++,很多地方都不懂。谢谢了
可以发我邮箱463224714qq.com,或者[email protected]或者直接发到这上面。
求一个稀疏矩阵连接存储程序
答案:2 悬赏:80
解决时间 2021-02-26 03:23
- 提问者网友:伴他一生,无悔
- 2021-02-25 23:21
最佳答案
- 二级知识专家网友:承载所有颓废
- 2021-02-26 00:35
#ifndef Matrix_H
#define Matrix_H
#include "List.h"
class MatNode
{
public:
int data;
int row, col;
union { NodeMatNode *down; ListMatNode *downrow; };
MatNode(int value = 0, NodeMatNode *p = NULL, int i = 0, int j = 0)
: data(value), down(p), row(i), col(j) {}
friend ostream operator (ostream strm, MatNode mtn)
{
strm '(' mtn.row ',' mtn.col ')' mtn.data;
return strm;
}
};
class Matrix : ListMatNode
{
public:
Matrix() : row(0), col(0), num(0) {}
Matrix(int row, int col, int num) : row(row), col(col), num(num) {}
~Matrix() { MakeEmpty(); }
void MakeEmpty()
{
ListMatNode *q;
while (first-data.downrow != NULL)
{
q = first-data.downrow;
first-data.downrow = q-first-data.downrow;
delete q;
}
ListMatNode::MakeEmpty();
row = col = num = 0;
}
void Input()
{
if (!row) { cout "输入矩阵行数:"; cin row; }
if (!col) { cout "输入矩阵列数:"; cin col; }
if (!num) { cout "输入非零个数:"; cin num; }
if (!row || !col || !num) return;
cout endl "请按顺序输入各个非零元素,以列序为主,输入0表示本列结束" endl;
int i, j, k, v;//i行数 j列数 k个非零元 v非零值
NodeMatNode *p = first, *t;
ListMatNode *q;
for (j = 1; j = col; j++) LastInsert(MatNode(0, NULL, 0, j));
for (i = 1; i = row; i++)
{
q = new ListMatNode;
q-first-data.row = i;
p-data.downrow = q;
#define Matrix_H
#include "List.h"
class MatNode
{
public:
int data;
int row, col;
union { NodeMatNode *down; ListMatNode *downrow; };
MatNode(int value = 0, NodeMatNode *p = NULL, int i = 0, int j = 0)
: data(value), down(p), row(i), col(j) {}
friend ostream operator (ostream strm, MatNode mtn)
{
strm '(' mtn.row ',' mtn.col ')' mtn.data;
return strm;
}
};
class Matrix : ListMatNode
{
public:
Matrix() : row(0), col(0), num(0) {}
Matrix(int row, int col, int num) : row(row), col(col), num(num) {}
~Matrix() { MakeEmpty(); }
void MakeEmpty()
{
ListMatNode *q;
while (first-data.downrow != NULL)
{
q = first-data.downrow;
first-data.downrow = q-first-data.downrow;
delete q;
}
ListMatNode::MakeEmpty();
row = col = num = 0;
}
void Input()
{
if (!row) { cout "输入矩阵行数:"; cin row; }
if (!col) { cout "输入矩阵列数:"; cin col; }
if (!num) { cout "输入非零个数:"; cin num; }
if (!row || !col || !num) return;
cout endl "请按顺序输入各个非零元素,以列序为主,输入0表示本列结束" endl;
int i, j, k, v;//i行数 j列数 k个非零元 v非零值
NodeMatNode *p = first, *t;
ListMatNode *q;
for (j = 1; j = col; j++) LastInsert(MatNode(0, NULL, 0, j));
for (i = 1; i = row; i++)
{
q = new ListMatNode;
q-first-data.row = i;
p-data.downrow = q;
全部回答
- 1楼网友:末路丶一枝花
- 2021-02-26 01:22
//创建稀疏矩阵m status createsmatrix(tsmatrix * m) { int i,m,n; elemtype e; status k; printf("请输入矩阵的行数,列数,非零元素数:"); scanf("%d,%d,%d",&(* m).mu,&(* m).nu,&(* m).tu); if ((* m).tu > max_size) { return error; } (* m).data[0].i = 0; for (i=1;i<=(* m).tu; ++i) { do { printf("请按行序顺序输入第%d个非零元素所在的行(1-%d),列(1-%d),元素值:",i,(* m).mu,(* m).nu); scanf("%d,%d,%d",&m,&n,&e); k = 0; if (m<1 || m>(* m).mu || n<1 || n>(* m).nu)//行或列超出范围 { k = 1; } if (m<(* m).data[i-1].i || m==(* m).data[i-1].i && n<=(* m).data[i-1].j)//行或列的顺序有错 { k = 1; } }while (k); (* m).data[i].i = m; (* m).data[i].j = n; (* m).data[i].e = e; } return ok; }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯