/* 数据结构分析与学习专栏
* Copyright (c) 2015, 山东大学 计算机科学与技术专业 学生
* All rights reserved.
* 作 者: 高祥
* 完成日期: 2015 年 4 月 11 日
* 版 本 号:016
*任务描述:针对稀疏矩阵,实现6个基本操作
* 1:建立稀疏矩阵 ;
* 2:输出稀疏矩阵 ;
* 3:转置稀疏矩阵 ;
* 4:稀疏矩阵相加 ;
* 5:稀疏矩阵相减;
* 6:稀疏矩阵相乘 ;
*主要函数:
* 1.void InitMatrix(Matrix &M);//初始化矩阵
* 2.void InsertElem(Link &newnode,Matrix &M);//将已有的非零元素结点插入到矩阵中
* 3.void DeleteElem(Matrix &M,Link &deletenode,int row,int line);//删除在(row,line)处的结点
* 4.void CreateMatrix(Matrix &M);//创建矩阵
* 5.void Output(Matrix M);//输出矩阵
* 6.void TransposeMatrix(Matrix &M);//转置矩阵
* 7.void AddMatrix(Matrix &M,Matrix &N);//矩阵相加
* 8.void SubtractMatrix(Matrix &M,Matrix &N);//矩阵相减
* 9.void MultiplyMatrix(Matrix &M,Matrix &N);//矩阵相乘
*/
#include<iostream>
#include<cstdlib>
#include<iomanip>
using namespace std;
#define OK 1
#define FALSE 0
typedef int Status;
typedef int ElemType;
typedef struct node
{
int row;//非零元素的行数
int line;//非零元素的列数
ElemType elem;//非零元素的大小
struct node *right;//同一行的链接
struct node *down;//同一列的链接
} Node,*Link;
typedef struct
{
Link *rowhead;//所有行链表表头的指针数组
Link *linehead;//所有列链表表头的指针数组
int rownum;//矩阵的总行数
int linenum;//矩阵的总列数
int elemnum;//矩阵的非零元素总数
} Matrix;
void InitMatrix(Matrix &M);//初始化矩阵
void InsertElem(Link &newnode,Matrix &M);//将已有的非零元素结点插入到矩阵中
void DeleteElem(Matrix &M,Link &deletenode,int row,int line);//删除在(row,line)处的结点
void CreateMatrix(Matrix &M);//创建矩阵
void Output(Matrix M);//输出矩阵
void TransposeMatrix(Matrix &M);//转置矩阵
void AddMatrix(Matrix &M,Matrix &N);//矩阵相加
void SubtractMatrix(Matrix &M,Matrix &N);//矩阵相减
void MultiplyMatrix(Matrix &M,Matrix &N);//矩阵相乘
void Interaction();//输出操作
int main()
{
Interaction();
Matrix M,N;
int operate;
while(cin>>operate)
{
switch(operate)
{
case 0:
return 0;
case 1:
cout<<"请输入创建的稀疏矩阵的行数、列数、非0元素个数:";
cin>>M.rownum>>M.linenum>>M.elemnum;
CreateMatrix(M);
break;
case 2:
Output(M);
break;
case 3:
TransposeMatrix(M);
break;
case 4:
INPUT1:
cout<<"请输入创建的稀疏矩阵的行数、列数、非0元素个数:";
cin>>N.rownum>>N.linenum>>N.elemnum
稀疏矩阵(十字链表存储)6种操作的实现
最新推荐文章于 2022-03-13 17:57:13 发布
该博客介绍了如何使用十字链表存储稀疏矩阵,并实现了6种基本操作:创建、输出、转置、相加、相减和相乘。通过交互式输入,用户可以创建不同尺寸的稀疏矩阵并进行相应的数学运算。操作过程涉及链表的插入、删除和遍历等数据结构操作。
摘要由CSDN通过智能技术生成