数据结构试验二
2015-04-11 13:31
232 查看
#include"iostream" #include"stdio.h" #include"algorithm" #include"string.h" #include"cmath" #define mx 1005 using namespace std; int matrix[mx][mx]; //三元组的结构定义 struct thNode //非零元素 { int row,col; int item; }; struct thMatrix { thNode *data; int m,n,t;//分别表示行数、列数和非零元素个数 }; //初始化三元组表 void initMatrix_Th(thMatrix &M) { M.data=new thNode[mx+1]; M.m=0; M.n=0; M.t=0; } //快速转置 void transMatrix_2(thMatrix M,thMatrix &T) { initMatrix_Th(T); T.m=M.n; T.n=M.m; T.t=M.t; int i,j,p,q; int num[100]; int cpot[100]; if(T.t) { for(i=1;i<=M.n;i++) num[i]=0;//M中每一列的非零元素个数初始化为0 for(i=1;i<=M.t;i++) ++num[M.data[i].col];//M中每一列的非零元素个数存储到一个数组中 cpot[1]=1; for(i=2;i<=M.n;i++) cpot[i]=cpot[i-1]+num[i-1];//每一列第一个非零元素的位置 for(p=1;p<=M.t;p++) { j=M.data[p].col; q=cpot[j];//确定第j列第一个非零元素的位置 T.data[q].row=M.data[p].col; T.data[q].col=M.data[p].row; T.data[q].item=M.data[p].item; ++cpot[j];//指向下一个位置 } } } //创建一个三元组 void creatMatrix(thMatrix &M) { initMatrix_Th(M); int i,j,k=1; cout<<"输入矩阵的行数和列数:"; cin>>M.m>>M.n; for(i=1;i<=M.m;i++) { for(j=1;j<=M.n;j++) { cin>>matrix[i][j]; if(abs(matrix[i][j])>0) { M.data[k].row=i; M.data[k].col=j; M.data[k++].item=matrix[i][j]; } } } M.t=k-1; } //输出一个三元组 void outputMatrix(thMatrix M) { int i; cout<<"矩阵的行和列:"<<M.m<<" "<<M.n<<endl; cout<<"非零元素个数:"<<M.t<<endl; for(i=1;i<=M.t;i++) { cout<<M.data[i].row<<" "<<M.data[i].col<<" "<<M.data[i].item<<endl; } } int main() { thMatrix M,T; initMatrix_Th(M); cout<<"输入一个矩阵:"<<endl; creatMatrix(M); cout<<"输出该矩阵的三元组表:"<<endl; outputMatrix(M); transMatrix_2(M,T); cout<<"输出该矩阵的转置矩阵的三元组表:"<<endl; outputMatrix(T); return 0; }
View Code
相关文章推荐
- sdut1480数据结构试验——哈希表
- 数据结构试验-Linklist
- 数据结构试验-Polynomial
- binaryTree--数据结构试验(题目)
- binaryTree--数据结构试验(代码)
- C语言数据结构KMP算法实现模式串主串匹配(数据结构第三次试验)
- 南邮数据结构试验---各种内排序算法实现及比较
- 数据结构试验-试验9-图及其应用
- 数据结构试验:二叉排序树
- 数据结构试验二:链表
- 数据结构试验:二叉排序树
- 2016数据结构试验1.2
- 数据结构试验 顺序表
- 河南理工大学14级数据结构第一次上机实验课题试验
- 精英计划第五周数据结构试验总结-飞鹰组
- 数据结构试验-银行业务队列简单模拟
- 数据结构试验-栈的实现及其应用
- 带数据结构试验时的一些感想
- SDUT 1480 数据结构试验: 哈希表
- 数据结构试验源码