数据结构实验题目:
稀疏矩阵A、B均采用三元组顺序表表示,验证实现矩阵A快速转置算法,并设计、验证矩阵A、B相加得到矩阵C的算法。
(1)从键盘输入矩阵的行数和列数,随机生成稀疏矩阵。
(2) 设计算法将随机生成的稀疏矩阵转换成三元组顺序表形式存储。
(3) 设计算法将快速转置得到的与相加得到的三元组顺序表分别转换成矩阵形式。
(4) 输出随机生成的稀疏矩阵A、B及其三元组顺序表、快速转置得到的与相加得到的三元组顺序表及其矩阵形式。
- 从键盘输入矩阵的行数和列数,随机生成稀疏矩阵。(老师要求不能用二维数组去贮存矩阵)
也就是说直接生成三元组
//动态随机生成三元组
TSMatrix Romand(int m,int n){
TSMatrix M;
int t=1;
int num[100]={
0};//记录数组位置是否是非0元
M.mu=m;
M.nu=n;
M.tu=(int)(m*n*factor)+1;//factor为稀疏因子
srand((unsigned)time(0));
while(t!=M.tu+1){
M.data[t].i = rand() % m+1;
M.data[t].j = rand() % n+1;
if(num[(M.data[t].i-1)*n+M.data[t].j] == 0){
//如果该位置没有数据,属于0元
M.data[t].v = rand() % 10+1;
t++;
num[(M.data[t].i-1)*n+M.data[t].j] = 1;
}
}
//对三元组排序
for(int i=1;i<=M.tu;i++){
for(int j = i+1;j<=M.tu;j++){
if((M.data[i].i > M.data[j].i)||(M