当前位置:文档之家› 数据结构实验报告05

数据结构实验报告05


/** * @ main function */ int main(void) {
Struct_SparceMatrix OriginalMatrix, TransMatrix; int si32DataNodeNumTemp = 0;
memset(&OriginalMatrix,0x00,sizeof(OriginalMatrix)); memset(&TransMatrix, 0x00, sizeof(TransMatrix));
{ printf("%3d,",TransMatrix.DataNode[ui32DataNodeNumTemp++].si32Data);
} else {
printf("%3d,", 0); } } printf("\n"); } system("pause"); return 0; }
《算法与数据结构》实验报告
for (unsigned int i = 0; i < OriginalMatrix.ui32MatrixRow; ++i) {
for (unsigned int j = 0; j < OriginalMatrix.ui32MatrixCol; ++j) {
printf("%3d,", si32OriginalMatrixComplete[i][j]);
if (si32OriginalMatrixComplete[i][j]) {
OriginalMatrix.DataNode[OriginalMatrix.ui32DataNodeNum].ui32Row = i; OriginalMatrix.DataNode[OriginalMatrix.ui32DataNodeNum].ui32Col = j; OrilMatrix.ui32DataNodeNum].si32Data = si32OriginalMatrixComplete[i][j]; ++OriginalMatrix.ui32DataNodeNum; } } printf("\n"); }
类别 上机表现 程序与报告 说明:
成绩评定表
评分标准
分值
积极出勤、遵守纪律 按要求完成设计任务
30 分
程序代码规范、功能正确 报告详实完整、体现收获
70 分
得分
合计
评阅教师: 姚峰
日 期: 20 年
月日
计算机科学与工程学院
实验内容 实验内容
在 m×n 的矩阵中,有 t 个非零元。令 δ = t/(m*n),称 δ 矩阵的稀疏因子, 常认为 δ ≤0.05 时称为稀疏矩阵。稀疏矩阵在工程中有着大量的应用,不少工 程问题都可以转化为对稀疏矩阵的计算问题。用三元组表实现稀疏矩阵的转置, 用(顺序取,直接存)方法。
{ for (unsigned int j = 0; j < TransMatrix.ui32DataNodeNum; ++j) { if (i == OriginalMatrix.DataNode[j].ui32Col) { TransMatrix.DataNode[ui32DataNodeNumTemp].ui32Row =
OriginalMatrix.DataNode[j].si32Data; printf("[%d,%d,%d]\n",
TransMatrix.DataNode[ui32DataNodeNumTemp].ui32Row,
TransMatrix.DataNode[ui32DataNodeNumTemp].ui32Col,
for (unsigned int i = 0, ui32DataNodeNumTemp = 0; i < TransMatrix.ui32MatrixRow; ++i) {
for (unsigned int j = 0; j < TransMatrix.ui32MatrixCol; ++j) {
if (i == TransMatrix.DataNode[ui32DataNodeNumTemp].ui32Row && j == TransMatrix.DataNode[ui32DataNodeNumTemp].ui32Col)
TransMatrix.DataNode[ui32DataNodeNumTemp].si32Data); ++ui32DataNodeNumTemp;
} } }
printf("The Transposition Matrix[%d,%d] is :\n", TransMatrix.ui32MatrixRow, TransMatrix.ui32MatrixCol);
OriginalMatrix.DataNode[j].ui32Col; TransMatrix.DataNode[ui32DataNodeNumTemp].ui32Col =
OriginalMatrix.DataNode[j].ui32Row; TransMatrix.DataNode[ui32DataNodeNumTemp].si32Data =
计算机科学与工程学院
《算法与数据结构》实验报告(五)
专业班级 学生学号 学生姓名
2017 级 1710050108
刘政林
实验地点 指导教师 实验时间
503 机房 姚峰
2019-6-3
实验项目
实验类别
实 验 目 的 及 要 求
稀疏矩阵的应用 基础性(√) 设计性() 综合性() 其它( )
(1)掌握掌握稀疏矩阵的表示方法及其运算的实现; (2)实现稀疏矩阵在三元组、十字链表等表示下的各运算并分 析其效率。
三元组表实现稀疏矩阵的转置(顺序取,直接存)算法伪代码如下:
1. 设置转置后矩阵 B 的行数、列数和非零元素的个数; 2. 计算 A 中每一列的非零元素个数; 3. 计算 A 中每一列的第一个非零元素在 B 中的下标; 4. 依次取 A 中的每一个非零元素对应的三元组; 2.1 确定该元素在 B 中的下标 pb; 2.2 将该元素的行号列号交换后存入 B 中 pb 的位置; 2.3 预置该元素所在列的下一个元素的存放位置;
}
/** * @Transposition matrix operations */ TransMatrix.ui32DataNodeNum = OriginalMatrix.ui32DataNodeNum; TransMatrix.ui32MatrixCol = OriginalMatrix.ui32MatrixRow; TransMatrix.ui32MatrixRow = OriginalMatrix.ui32MatrixCol;
实验说明: 引入两个数组作为辅助数据结构: num[nu]:表示矩阵 A 中某列的非零元素的个数; cpot[nu]:初始值表示矩阵 A 中某列的第一个非零元素在 B 中的位置。 num 与 cpot 递推关系:
cpot[0]=0;
cpot[col]=cpot[col-1]+num[col-1]; 1≤col<nu
printf("Transposition sparse matrix:\n"); for (unsigned int i = 0,ui32DataNodeNumTemp = 0; i < TransMatrix.ui32MatrixRow; ++i)
《算法与数据结构》实验报告
4
计算机科学与工程学院
《算法与数据结构》实验报告
2
#include <stdio.h> #include <stdlib.h> #include <string.h>
计算机科学与工程学院
实验内容
/**
* @macro definition
*/
#define MAX_NODE_NUM 100
#define MAX_ROW
printf("Original sparse matrix:\n"); for (unsigned int i = 0; i < OriginalMatrix.ui32DataNodeNum; ++i) {
printf("[%d,%d,%d]\n",OriginalMatrix.DataNode[i].ui32Row, OriginalMatrix.DataNode[i].ui32Col, OriginalMatrix.DataNode[i].si32Data);
《算法与数据结构》实验报告
3
{ {0,8,0,6,0,2,0}, {0,0,34,54,0,0,2}, {-7,0,0,0,0,0,0}, {0,0,0,0,-12,0,0}
};
计算机科学与工程学院
printf("The Original Matrix[%d,%d] is :\n", OriginalMatrix.ui32MatrixRow, OriginalMatrix.ui32MatrixCol);
/** * @Original matrix operations */ OriginalMatrix.ui32MatrixRow = MAX_ROW; OriginalMatrix.ui32MatrixCol = MAX_COL;
int si32OriginalMatrixComplete[MAX_ROW][MAX_COL] =
4
#define MAX_COL
7
/** * @Global srtuct */ typedef struct {
相关主题