数据结构课程设计之稀疏矩阵实现与应用1 联系客服

发布时间 : 星期二 文章数据结构课程设计之稀疏矩阵实现与应用1更新完毕开始阅读1a5a4f7e0912a2161479297b

2.程序的性能分析,包括时空分析;

能应对一般小的错误输入,如果复杂则自动退出程序

3.上机过程中出现的问题及其解决方案;

1.起始有错误,设定的变量名相同。经检查,改正。

2.一些逻辑错误。经讨论改正。运行出现部分语法错误修正

4.程序中可以改进的地方说明;

程序在运行中一旦出现矩阵数据格式错误如输入汉字,则程序自动退出。需要重新启动。更新程序对更多错误输入情况的分析能力。

5.程序中可以扩充的功能及设计实现假想。

对退出操作的扩充

在主菜单下,用户输入4回车选择退出程序是,询问是否真的退出系统,如果是,则即退出系统,否则显示??continue??并且返回主菜单。为了方便由于误按导致程序退出。 在退出时可以增加一段感谢使用本程序的结束语。

五、测试结果

系统运行主界面

输入需要执行的操作1矩阵的转置

输入需要执行的操作2矩阵的加法

输入需要执行的操作3矩阵的乘法

输入错误操作时需要重新选择

退出操作

六、用户手册

1.本程序执行文件为:crosslist.exe

2.进入本系统之后,随即显示系统主菜单界面。用户可在该界面下输入各子菜单前对应的数字并按回车,执行相应子菜单命令

3.执行操作时,按要求输入数字。彼此之间用空格隔开。

4.执行加法运算时,输入的两个矩阵的行必须相同,列数也必须相同。这是基本的矩阵运算常识。

5.执行乘法运算时,第一个矩阵的行数和第二个矩阵的列数相同。

6.当输入错误时请尝试退出程序重新运行。请尽量遵守矩阵运算的规则输入有效的运算。

七、体会与自我评价

我选的上机题目是实现三元组,十字链表下的转置,乘法,加法运算。

对这个题目,我觉得有点难,因为我们数据结构这一部分并没有讲,可是选题必须是每人选择一个不许选重。有点无奈吧,当作是考验了。各种资料收集,各种代码整合。各种错误。虽然上机的时间只有短短两个星期,但从中学到了不少知识。数据结构可以说是计算机里一门基础课程,对于以后的学习尤为重要。所以我们一定要把基础学扎实,这两周的上机帮我们重新巩固基础知识,提高了我们专业的动手实践能力。

在实践的过程中我们应当有良好的规划,每天完成一小部分。尽量减少操作的盲目性,提高我们学习的效率。有个总体的大纲来逐步实现。我也曾经犯过这种错误。每个函数都做出来部分。结果都没做完。所以计划很重要

在实验中我们要培养自己独立的思考能力和解决问题的能力。培养这种能力主要看我们对待这次实验的态度。我们要把它当作以后工作时接的项目一样认真对待。积极的朝着更好地一面发展不断的完善程序。不能马马虎虎随便应付一下。 通过这次实验我也认识到了数据结构这门课程的重要性,以及C语言功能的强大。它可以令计算机执行各种你想要的操作。当然前提是你的技术水平。使我深刻的认识到要学好数据结构这门课程,为了以后打好坚实的基础。提高自己的动手实践能力,把所学的理论知识和实践相结合。就像古人云,纸上得来终觉浅,得知此事要躬行。为了以后的计算机道路。不断的提高自身的专业素养。奋斗。

也希望在今后的学习生活中向老师学到更多的知识。不断的充实自己。努力改正自己的坏毛病,做个奋发向上的大学生。

源代码:

#include #include using namespace std;

const int MAXSIZE = 100; // 定义非零元素的对多个数 const int MAXROW = 10; // 定义数组的行数的最大值

typedef struct { int i, j; int e;

} Triple; // 定义三元组的元素

typedef struct {

Triple data[MAXSIZE + 1]; int mu, nu, tu;

} TSMatrix; // 定义普通三元组对象

typedef struct {

Triple data[MAXSIZE + 2]; int rpos[MAXROW + 1]; int mu, nu, tu;

} RLSMatrix; // 定义带链接信息的三元组对象

typedef struct OLNode { // 定义十字链表元素 int i, j; int e;

struct OLNode *right, *down; // 该非零元所在行表和列表的后继元素 } OLNode, *OLink; // 定义十字链表元素

typedef struct { // 定义十字链表对象结构体 OLink *rhead, *chead;

int mu, nu, tu; // 系数矩阵的行数,列数,和非零元素个数 } CrossList; // 定义十字链表对象结构体

template

bool InPutTSMatrix(P & T, int y) { //输入矩阵,按三元组格式输入 cout << \输入矩阵的行,列和非零元素个数:\ cin >> T.mu >> T.nu >> T.tu;

cout << \请输出非零元素的位置和值:\ for (int k = 1; k <= T.tu; k++)

cin >> T.data[k].i >> T.data[k].j >> T.data[k].e; return true; }

template

bool OutPutSMatrix(P T) { int m, n, k = 1;

for (m = 0; m < T.mu; m++) { for (n = 0; n < T.nu; n++) {

if ((T.data[k].i - 1) == m && (T.data[k].j - 1) == n) {