- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
田洪斌实验报告
数据报告
实验内容
1、实现程序,基于对称矩阵的压缩存储表示方法,实现对于以整数数据为数据元素的对称矩阵的压缩存储及按行、列下标查询特定元素等操作。
2、实现程序,基于稀疏矩阵三元组表存储表示方法,参照教材所述类C语言算法,实现对于以整数数据为数据元素的稀疏矩阵的存储、求转置阵等操作。
实验目的
1、掌握线性表的链式结构的静态及操作特点;
2、掌握线性表的链式结构的存储结构和常见操作在C语言环境中的实现方法;
需求分析
用线性表的链式结构表示来完成输入、编辑、调试、运行的全过程。并规定:
手动输入行数、列数和非零元的个数
程序可以输入、调试、运行、显示
测试数据:n个顶点的行号、列号以及值
系统设计
1.数据结构设计
使用三元组顺序表实现稀疏矩阵的定义,稀疏矩阵的三元组顺序表的存储用的是结构体在这个结构体中行标和列标使用整型定义,而一维数组采用的是结构体这样子做方便后面功能的实现。在整个程序中函数与函数之间采用的是调用的关系,这样是为了使程序模块化,方便以后的维护。
程序结构设计
(1)程序中主要函数功能:
void CreateTriTupleTable(TriTupleTable *T)/////////////////////////////////////////////稀疏矩阵的创建
void Traverse(TriTupleTable *T)///////////////////////////////////////////////////////////////稀疏矩阵的显示
void TransMatrix(TriTupleTable *A, TriTupleTable*B)///////////////////////////////稀疏矩阵的转置
void menu()/////////////////////////////////////////////////////////////////////////////////////////////菜单
void main()//////////////////////////////////////////////////////////////////////////////////////////////主函数
函数调用关系
见图6-1
图
图6-1 函数关系图
调试分析
算法和函数中出现了一些系统无法识别的变量,照成程序出现了错
误。原因是没有注意算法与源程序的区别。算法是简单的对源程序进行描述
的,是给人阅读的,所以有些变量没有定义我们就能看懂。而程序中的变量一定要先定义才能够被引用,才能被计算机识别。
在调试过程中遇到问题是利用C++程序进行调试的,找出错误并改正。
学会如何调用函数。
学会稀疏矩阵的存储方法以及常见操作在C语言环境中的实现方法。
在程序运行中,每次运行到转置是就停止运行,最后在程序中找出了错误并改正了。
输入5:即退出程序
测试结果
1.运行时输入正确密码进入主界面,系统根据输入的数字选项来调用相应的函数。主要实现“功能选择”的界面,在这个界面里有显示系统的五大功能,根据每个功能前面的序号进行选择。以下为该界面:
图6-2 主界面
2.当选择1录入完成输入时,运行结果如下图:
图6-3 稀疏矩阵的创建
3.当录入完成输入显示稀疏矩阵时,运行结果如下图:
图6-4稀疏矩阵的显示
4.当选择稀疏矩阵的转置并显示时,运行结果如下图:
图6-5稀疏矩阵的转置
当选择退出时,运行结果如下图:
图6-6退出程序
经验和体会
本次试验利用C语言编程,完成了三元组表的建立、三元组表的输出、三元组表的转置,函数之间的调用,提升了我的C语言编程能力,同时也加深了我对数据结构中关于线性表结构有关基础概念、基本算法的理解,同时,通过程序的调试及观察分析程序运行的情况,也进一步增加了我调试程序的经验,并使我认识到了线性表的结构。
程序源代码
#include stdio.h
#define MaxSize 100
/////////////////////////////////三元组表的存储方式
typedef int DataType;
typedef struct {
DataType v;
int i, j;
}TriTupleNode;
typedef struct {
TriTupleNode data[MaxSize+1]; //三元组数组
int m, n, t; //行数 列数以及非零元个数
}TriTupleTable;
///////////////////////////
文档评论(0)