稀疏矩阵的存储——十字链表
<span style="font-size:18px;">/*
稀疏矩阵的存储——十字链表的实现
*/
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
//数据节点
class Node
{
public:
int row;
int col;
class Node *right, *down;
union Tag
{
int value;
class Node *link;
}tag;
};
//十字链表
class Matrix
{
public:
Matrix(){}
~Matrix(){}
//得到行列最大值
void MAX_N(int &res, int row, int col)
{
res = (row > col ? row : col);
}
//创建十字链表
void CreateMat(string filename,int trow, int tcol)
{
int i, j;
int MAX;
MAX_N(MAX, trow, tcol);//确定行列最大数
Node *h;//共用的行列头结点
Node *p, *q, *r;
mh = (Node *)malloc(sizeof(Node));//头结点
mh->row = trow;//总行数
mh->col = tcol;//总列数
r = mh;
i = 0;
//生成所有行列头结点(尾插法)
while (i < MAX)
{
h = (Node *)malloc(sizeof(Node));
h->down = h->right = h;
r->ta