数据结构课程设计基本稀疏矩阵运算的运算器Word文档格式.docx

上传人:b****2 文档编号:14737830 上传时间:2022-10-24 格式:DOCX 页数:15 大小:63.25KB
下载 相关 举报
数据结构课程设计基本稀疏矩阵运算的运算器Word文档格式.docx_第1页
第1页 / 共15页
数据结构课程设计基本稀疏矩阵运算的运算器Word文档格式.docx_第2页
第2页 / 共15页
数据结构课程设计基本稀疏矩阵运算的运算器Word文档格式.docx_第3页
第3页 / 共15页
数据结构课程设计基本稀疏矩阵运算的运算器Word文档格式.docx_第4页
第4页 / 共15页
数据结构课程设计基本稀疏矩阵运算的运算器Word文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数据结构课程设计基本稀疏矩阵运算的运算器Word文档格式.docx

《数据结构课程设计基本稀疏矩阵运算的运算器Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计基本稀疏矩阵运算的运算器Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

数据结构课程设计基本稀疏矩阵运算的运算器Word文档格式.docx

二、概要设计

1、抽象数据类型三元组的定义如下:

ADTTriple

{

数据对象:

D={ai|ai(-ElemSet,i=1,2,...,n,n>

=0};

数据关系:

R1={<

ai-1,ai>

|ai-1,ai(-D,i=2,...,n}

基本操作:

}

2、基于三元组顺序表表示的矩阵操作:

(1)创建三元组顺序表表示的矩阵:

voidcreateMatrix(TSMatrix&

A)

(2)初始化矩阵:

voidinitMatrix(TSMatrix&

(3)相加:

voidadd(TSMatrixA,TSMatrixB,TSMatrix&

C)

(4)相减:

voidsub(TSMatrixA,TSMatrix&

B,TSMatrix&

(5)找m行n列元素在A中顺序表中的位置:

intsearch(TSMatrixA,intm,intn)

(6)相乘;

voidmult(TSMatrixA,TSMatrixB,TSMatrix&

(7)输入以阵列形式表示的矩阵:

voidprint(TSMatrixA)

3、主程序

Voidmain()

While(true)

调用相应函数执行相应操作;

输出操作结果;

4、本程序只有两个模块,调用关系简单:

三、详细设计

1、三元组结构描述:

#defineMAXSIZE20

usingnamespacestd;

typedefstruct

introw;

intcol;

inte;

}Triple;

Tripledate[MAXSIZE];

intm,n,len;

}TSMatrix;

A.len=0;

A.m=0;

A.n=0;

for(inti=0;

i<

MAXSIZE;

i++)

A.date[i].col=0;

A.date[i].e=0;

A.date[i].row=0;

2、各种操作函数源代码:

A){

initMatrix(A);

cout<

<

"

创建矩阵:

;

请输入矩阵的行列值及非0元素个数\n"

cin>

>

A.m>

A.n>

A.len;

请输入第"

个非0元素对应的行、列、值:

A.date[i].row;

A.date[i].col;

A.date[i].e;

C)//相加{

if(A.m==B.m&

&

A.n==B.n)

inti=0,j=0;

intk=0;

C.m=A.m;

C.n=A.n;

while(i<

A.len||j<

B.len)

if(i==A.len&

j<

C.date[k].col=B.date[j].col;

C.date[k].row=B.date[j].row;

C.date[k++].e=B.date[j].e;

C.len++;

j++;

elseif(i<

A.len&

j==B.len)

C.date[k].col=A.date[i].col;

C.date[k].row=A.date[i].row;

C.date[k++].e=A.date[i].e;

i++;

else

if(A.date[i].row>

B.date[j].row)

elseif(A.date[i].row<

if(A.date[i].col==B.date[j].col)

if(A.date[i].e+B.date[j].e!

=0)

C.date[k++].e=A.date[i].e+B.date[j].e;

elseif(A.date[i].col>

B.date[j].col)

elseif(A.date[i].col<

不能相加~"

C)//相减

for(intk=0;

k<

B.len;

k++)

B.date[k].e=-B.date[k].e;

add(A,B,C);

不能相减~"

for(k=0;

intsearch(TSMatrixA,intm,intn){

intflag=-1;

if(A.date[i].row==m&

A.date[i].col==n)

flag=i;

break;

returnflag;

C)//相乘

if(A.n==B.m)

C.n=B.n;

for(i=0;

for(j=0;

j++)

if(A.date[i].col==B.date[j].row)

intflag=search(C,A.date[i].row,B.date[j].col);

if(flag==-1)

C.date[C.len].col=B.date[j].col;

C.date[C.len].row=A.date[i].row;

C.date[C.len++].e=A.date[i].e*B.date[j].e;

C.date[flag].e=C.date[flag].e+A.date[i].e*B.date[j].e;

{cout<

不能相乘~"

endl;

voidprint(TSMatrixA){

inti,j;

intM[MAXSIZE][MAXSIZE];

A.m;

A.n;

M[i][j]=0;

while(k<

A.len)

M[A.date[k].row-1][A.date[k].col-1]=A.date[k].e;

k++;

|"

M[i][j]<

"

|"

voidshowtip()

------------请选择要执行的操作--------"

0---创建矩阵"

1---A+B"

2---A-B"

3---A*B"

4---退出"

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

3、主函数:

voidmain()

TSMatrixA,B,C;

initMatrix(B);

initMatrix(C);

showtip();

inti;

i;

while(true)

switch(i)

case0:

system("

cls"

);

创建矩阵A:

createMatrix(A);

创建矩阵B:

createMatrix(B);

case1:

if(A.m==0||B.m==0)

未建矩阵"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1