⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 seqspamatrix.h

📁 里面包含各种数据结构方面的知识,如链表,树,图等 含有vc代码
💻 H
字号:
struct DataType							//顺序表的数据元素类型
{
	int row;							//行号
	int col;							//列号
	ElemType value;						//元素值
};

#include "SeqList.h"					//包含顺序表类

class SeqSpaMatrix: public SeqList		//三元组顺序表类
//SeqSpaMatrix类以public方式继承SeqList类
{
	//输出流重载
friend ostream& operator<< (ostream& out, const SeqSpaMatrix& a);
private:
	int rows;							//稀疏矩阵的行数
	int cols;							//稀疏矩阵的列数
	int dNum;							//稀疏矩阵的非零元个数
public:
	SeqSpaMatrix(int max);				//构造函数
	~SeqSpaMatrix(void)					//析构函数
		{};
	
	void CreateMatrix(int r, int c, int d, DataType item[]);//创建
	void Transpose(SeqSpaMatrix& a);						//转置
};

SeqSpaMatrix::SeqSpaMatrix(int max):SeqList(max)
//构造函数。首先调用顺序表类的构造函数,然后定义自身的初始值
{
	rows = cols =  dNum = 0;
}

void SeqSpaMatrix::CreateMatrix(int r, int c, int d, DataType item[])
//创建。创建一个有r行、c列和d个非零元的三元组顺序表
//创建的数值来自数组item
{
	rows = r;;							//置行数
	cols = c;							//置列数
	dNum = d;							//置非零元个数

	for(int i = 0; i < d; i++)			//依次插入三元组元素
		Insert(item[i], i);
}

void SeqSpaMatrix::Transpose(SeqSpaMatrix& a)
//转置。把三元组顺序表转置为三元组顺序表a
{
	if(a.maxSize < maxSize)				//内存空间不足时重新申请
	{
		delete []a.list;
		a.list = new DataType[maxSize];
		a.maxSize = maxSize;
	}

	a.cols = rows;							//置列数
	a.rows = cols;							//置行数
	a.dNum = dNum;							//置非零元个数

	for(int i = 0; i < dNum; i++)			//依次转置
	{
		a.list[i].row =  list[i].col;
		a.list[i].col =  list[i].row;
		a.list[i].value = list[i].value;
	}
}
/*
void SeqSpaMatrix::Transpose(SeqSpaMatrix& a)
//转置。把三元组顺序表转置为三元组顺序表a
//转置后的矩阵按先行下标再列下标的次序排列
{
	if(a.maxSize < maxSize)				//内存空间不足时重新申请
	{
		delete []a.list;
		a.list = new DataType[maxSize];
		a.maxSize = maxSize;
	}

	a.cols = rows;							//置列数
	a.rows = cols;							//置行数
	a.dNum = dNum;							//置非零元个数

	if(dNum == 0)	return;
	else
	{
		int i, j, k;
		i = 0;								//i为a.list[]的下标值
		for(k = 1; k <= cols; k++)			//k为原矩阵的列下标
		{
			for(j = 0; j < a.dNum; j++)		//j为list[]的下标值
			{
				if(list[j].col == k)		//寻找原矩阵中列下标最小值
				{
					a.list[i].row = list[j].col;		//列号转为行号
					a.list[i].col = list[j].row;		//行号转为列号
					a.list[i].value = list[j].value;	//数组元素复制
					i++;
				}
			}
		}
	}
}
*/
ostream& operator<< (ostream& out, const SeqSpaMatrix& a)
//输出流重载。
{
	out << "矩阵行数为:" << a.rows;
	out << ",列数为:" << a.cols;
	out << ",非零元个数为:" << a.dNum <<endl;

	cout << "矩阵非零元三元组为:" << endl;
	for(int i = 0; i < a.dNum; i++)
		out << "a(" << a.list[i].row << ',' << a.list[i].col << ") = "
			<< a.list[i].value << endl;

	return out;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -