一、实验内容和要求2、若矩阵采用三元组顺序表表示,设计并验证找出矩阵中所有马鞍点的算法。二、实验过程及结果一、需求分析1、将随机生成的数定义为int型(为方便起见设定范围为-20 至 19(不含 0),可修改), 三元组存储的元素分别为非零元的行下标、列下标及该位置的元素值,零元不进行存储。 实际上在生成稀疏矩阵时是随机选取一些位置生成非零元然后存入三元组中。2、从键盘输入矩阵的行数和列数后应能输出三元组顺序表及相应矩阵(按行和列排列形式输出)。3、 程序能实现的功能包括:①初始化矩阵;②产生新的随机矩阵;③手动输入新的矩阵;④输出阵列形式的矩阵;⑤找出矩阵的马鞍点;⑥输出矩阵的马鞍点的三元组形式;⑦清空矩阵;⑧清空马鞍点;二、 概要设计1、矩阵的抽象数据类型定义:ADT Matrix{ 数据对象: D={ aij|i=1,2,⋯,m,j=1,2,⋯,n; Ai,j∈ ElemSet,m 和 n 分别称为矩阵的行数和列数} 数据关系: R={Row,Col}Row={
|1≤i ≤ m, 1 ≤j ≤n-1} Col ={|1≤i ≤m-1, 1 ≤j ≤n} 基本操作 : InitMatrix(&M) 操作结果:初始化矩阵M CreateTSMatrix(&M) 操作结果:创建一个随机矩阵M CreateMatrixSelf(&M) 操作结果:手动创建一个矩阵M PrintTSMatrix(M) 初始条件:矩阵M已存在操作结果:以阵列形式输出矩阵GetSaddlePoint(M,&saddle) 初始条件:矩阵M已存在操作结果:找出矩阵M的马鞍点用三元组形式存储到saddle 中PrintSaddlePoint(M,&saddle) 初始条件:矩阵M已存在,其马鞍点存储在三元组saddle 中操作结果:输出矩阵M的马鞍点 , 即 saddle 中的元素ClearMatrix(&M) 初始条件:矩阵M已存在操作结果:清空矩阵ClearSaddlePoint(&saddle) 初始条件: saddle 中存储了矩阵的马鞍点三元组形式操作结果:清空马鞍点}ADT Matrix ;⒊ 本程序模块结构⑴主函数模块void main(){ while( 命令不是退出 ){ printf(" 选项: \n"); printf("Your Choice:"); if(创建新的矩阵 ){ 清空之前的矩阵和马鞍点;} switch(choice){ case 1: 自己创建新矩阵;case 2: 创建随机的新矩阵;case 3: 输出创建的矩阵;case 4: 找出马鞍点并输出;default:退出;} } }三、详细设计1、基本数据类型操作⑴typedef int ElemType; typedef struct{ int i,j; ElemType e; }Triple;//数据类型三元组typedef struct{ Triple *base;...