稀疏矩阵的十字链表存储

本文介绍了一种使用十字链表存储稀疏矩阵的方法,包括创建、输出和销毁稀疏矩阵的实现。通过创建三元组并按行和列插入,实现了非零元素的有效存储。代码示例展示了如何按用户输入构建稀疏矩阵,并以行链表顺序输出矩阵的所有元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
using namespace std;

#define ok 1
#define error 0
typedef int Status;

template<class T>
class Triple{
template<class T> friend class CrossSMatrix;
private:
	int i,j;	//i,j表示该非零元的行和列下标
	T	e;		//非零元素的值
	Triple<T> *right,*down;	//该非零元所在行表和列表的后继链域
};

//-------------稀疏矩阵的基本操作的函数原型说明---------------
template<class T>
class CrossSMatrix{
public:
	//TSMatrix();
	Status CreateSMatrix();	//创建稀疏矩阵M
	Status DesSMatrix();	//销毁稀疏矩阵
	Status PrintSMatrix();	//输出稀疏矩阵
private:
	Triple<T> *rhead,*chead;//行和列链表头指针向量基址
	int rpos[MAXRC+1];
	int row,col,num;	//矩阵的行数、列数和非零元个数
};

//--------------------稀疏矩阵的基本操作的函数实现---------------------
template<class T>
Status CrossSMatrix<T>::CreateSMatrix()
{
	int count=1;//非零元素计数器
	cout<<"输入矩阵的行数row= ";cin>>row;
	cout<<"\n"<<"输入矩阵的列数col= ";cin>>col;
	cout<<"\n"<<"输入矩阵非零元个数num= ";cin>>num;cout<<endl;
	if(num>(row*col)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值