【数据结构实验四】数组

来源:互联网 发布:python遍历一个字符串 编辑:程序博客网 时间:2024/05/14 18:00

版权申明:

本实验的实验目的,实验内容,实验要求归东北大学所有,未经许可禁止转载。


实验四 数组

实验目的

掌握利用三元组实现稀疏矩阵的顺序存储;掌握三元组的基本操作,实现矩阵的转置。

实验内容

1. 通过结构体声明三元组类型和稀疏矩阵类型;

2. 实现矩阵的创建和输出;

3. 编写矩阵转置函数;

4. 在主函数中声明一个稀疏矩阵,转置后并输出。

源码:

#define MAXSIZE 12500#include "stdafx.h"#include <iostream>using namespace std;typedef int ElemType;typedef int Status;/***********类型定义***********/typedef struct{int i, j;  //该非零元的行下标和列下标ElemType e;  //非零元的值}Triple;typedef struct{Triple data[MAXSIZE + 1];  //三元组的最大范围int mu, nu, tu;  //三元组的行、列、值}TSMatrix;/***********创建三元组***********/void CreateSMatrix(TSMatrix &M, int mu, int nu, int tu){M.mu = mu;M.nu = nu;M.tu = tu;int k ;M.data[0].e = 0;cout << "行数:" << mu << " 列数:" << nu << endl;cout << "请输入:" << tu << " 个三元组(i j elem):" << endl;for(k = 1; k <= tu; k++){cin >> M.data[k].i >> M.data[k].j >> M.data[k].e;}}/***********显示三元组***********/void PrintSMatrix(TSMatrix M){cout << endl;cout << "稀疏矩阵为: " << endl;int i, j, p;p = 1;for(i = 1; i <= M.mu; i++){for(j = 1; j <= M.nu; j++){if(M.data[p].i == i && M.data[p].j == j){cout << M.data[p].i << " " << M.data[p].j << " " << M.data[p].e << endl;p++;}}}cout << endl;}/***********矩阵转置***********/Status TransposeSMatrix(TSMatrix M, TSMatrix &T){cout << "##########矩阵转置##########" << endl;int col, q, p;T.mu = M.nu;T.nu = M.mu;T.tu = M.tu;if(T.tu){q = 1;for(col = 1; col <= M.nu; ++col){for(p = 1; p <= M.tu; ++p){if(M.data[p].j == col){T.data[q].i = M.data[p].j;T.data[q].j = M.data[p].i;T.data[q].e = M.data[p].e;++q;}}}}return OK;}/***********主函数***********/int main(){TSMatrix A, B;CreateSMatrix(A, 4, 4, 5);PrintSMatrix(A);TransposeSMatrix(A, B);PrintSMatrix(B);return 0;}
注意一下,显示三元组函数那边其实没有必要比较i和j,直接循环p其实就ok了,这个bug后来也没改,毕竟这样程序也可以用==、


运行结果:


0 0
原创粉丝点击