#include <iostream> using namespace std; /*所有的算法都是基于数据结构的,所以必须明确数据结构是如何设计的*/ #define ELEMTYPE int typedef struct { int row; int col; ELEMTYPE item; }ELEM; typedef struct { ELEM *data;//非0元素列表 int mu;//矩阵行数 int nu;//矩阵列数 int tu;//非0元素个数 }TSMatrix; /*根据数据结构中属性,进行算法设计*/ /*为三元组分配内存,并对三元组进行属性设置*/ void initMatrix(TSMatrix* M, int mu, int nu, int tu) { /*参数合法性检查*/ if (mu<1 || nu <1 || tu<1 || tu> mu*nu) { cout<<“输入参数出错”<<endl; exit(1); } //对三元组进行初始化 M->mu =mu; M->nu =nu; M->tu =tu; M->data = new ELEM[tu];//为非0元素分配内存 } /*销毁三元组,释放内存,并对属性进行设置*/ void destroyMatrix(TSMatrix* M) { delete []M->data; M->mu =0; M->nu =0; M->tu =0; } /*复制三元组,依次把所有数据复制到另一个三元组中*/ TSMatrix * copyMatrix(TSMatrix *M, TSMatrix* T) { initMatrix(T, M->mu, M->nu, M->tu);//对T进行初始化,分配内存并设置属性值 /*复制三元组元素*/ int i=0; for (i=0; i< T->tu; i++) { T->data[i] = M->data[i]; } return T; } /*输出所有元素*/ void display(TSMatrix *M) { /*逐个输出所有元素*/ int i =0; for (i =0; i< M->tu; i++) { cout<<M->data[i].row; cout<<” “<<M->data[i].col; cout<<” “<<M->data[i].item; cout<<endl; } } void main() { TSMatrix M; initMatrix(&M, 3,3,3);//对矩阵三元组进行初始化 TSMatrix T; //为矩阵存入部分数据 int i =0; for (i =0; i< M.tu; i++) { M.data[i].row = i; M.data[i].col = i; M.data[i].item = i; } copyMatrix(&M, &T);// 复制三元组 //输出矩阵数据 cout<<“输出原始矩阵”<<endl; display(&M); cout<<“输出复制的矩阵”<<endl; display(&T); destroyMatrix(&M);//销毁矩阵三元组 }