自主实验6系数矩阵十字链表的存储Word文件下载.docx

上传人:b****2 文档编号:3825578 上传时间:2023-05-02 格式:DOCX 页数:12 大小:20.97KB
下载 相关 举报
自主实验6系数矩阵十字链表的存储Word文件下载.docx_第1页
第1页 / 共12页
自主实验6系数矩阵十字链表的存储Word文件下载.docx_第2页
第2页 / 共12页
自主实验6系数矩阵十字链表的存储Word文件下载.docx_第3页
第3页 / 共12页
自主实验6系数矩阵十字链表的存储Word文件下载.docx_第4页
第4页 / 共12页
自主实验6系数矩阵十字链表的存储Word文件下载.docx_第5页
第5页 / 共12页
自主实验6系数矩阵十字链表的存储Word文件下载.docx_第6页
第6页 / 共12页
自主实验6系数矩阵十字链表的存储Word文件下载.docx_第7页
第7页 / 共12页
自主实验6系数矩阵十字链表的存储Word文件下载.docx_第8页
第8页 / 共12页
自主实验6系数矩阵十字链表的存储Word文件下载.docx_第9页
第9页 / 共12页
自主实验6系数矩阵十字链表的存储Word文件下载.docx_第10页
第10页 / 共12页
自主实验6系数矩阵十字链表的存储Word文件下载.docx_第11页
第11页 / 共12页
自主实验6系数矩阵十字链表的存储Word文件下载.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

自主实验6系数矩阵十字链表的存储Word文件下载.docx

《自主实验6系数矩阵十字链表的存储Word文件下载.docx》由会员分享,可在线阅读,更多相关《自主实验6系数矩阵十字链表的存储Word文件下载.docx(12页珍藏版)》请在冰点文库上搜索。

自主实验6系数矩阵十字链表的存储Word文件下载.docx

(3)输入右侧矩阵A,检验程序运行结果。

(4)给出具体的算法分析,包括时间复杂度和空间复杂度等。

(5)撰写实验报告。

A=

4、

实验步骤与源程序

(1)实验步骤

1、建立结构体。

2、编写调用函数。

3、运行程序,并且抓图粘图。

4、撰写实验报告。

(2)源程序

#include<

iostream.h>

stdio.h>

iomanip.h>

stdlib.h>

structlinknode

{

introws,cols;

linknode*down,*right;

unionvnext

{

intv;

linknode*next;

}node;

};

linknode*CreateMatlind();

linknode*InputMatlind(linknode,int);

voidShowMatlind(linknode);

voidSearchMatlind(linknode*hm,ints);

linknode*CreateMatlind()//创建空十字链表

inti,j,maxlin;

linknode*hm,*cp[100],*p;

printf("

\n\t\t请输入稀疏矩阵的行数,列数(用逗号隔开):

"

);

scanf("

%d,%d"

&

i,&

j);

if(i>

j)

maxlin=i;

else

maxlin=j;

hm=newlinknode;

cp[0]=hm;

for(intl=1;

l<

=maxlin;

l++)

p=newlinknode;

p->

rows=0;

cols=0;

down=p;

right=p;

cp[l]=p;

cp[l-1]->

node.next=p;

}

cp[maxlin]->

node.next=hm;

hm->

rows=i;

cols=j;

returnhm;

}

linknode*InputMatlind(linknode*hm,ints)//输入非零元素

linknode*cp[100],*p,*q;

intm,n,t;

inti,j,k,maxlin;

i=hm->

rows;

j=hm->

cols;

for(intx=0;

x<

s;

x++)

printf("

\n\t\t请输入非零元的行号,列号和值(用逗号隔开):

scanf("

%d,%d,%d"

m,&

n,&

t);

rows=m;

cols=n;

node.v=t;

k=1;

q=cp[m];

while(k)

{

if((q->

right==cp[m])||(q->

right->

cols>

n))

{

p->

right=q->

right;

q->

k=0;

}

elseif(q->

cols==n)

cols<

n)

q=q->

k=1;

}

q=cp[n];

down==cp[n])||(q->

down->

rows>

m))

down=q->

down;

elseif(q->

rows==m)

rows<

m)

}

voidShowMatlind(linknode*hm)//显示十字链表

intm,n;

linknode*p,*q;

m=hm->

n=hm->

q=p=hm->

node.next;

p=p->

cout<

<

endl<

endl;

\n\t\t"

for(inti=1;

i<

=m;

i++)

for(intj=1;

j<

=n;

j++)

if((p->

rows==i)&

&

(p->

cols==j))

printf("

%8d"

p->

node.v);

else

%8c"

'

0'

if((j==n)&

right==q))

break;

elseif(p->

right!

=q)

p=p->

\n\n\t\t"

p=q;

q=p=p->

p=p->

voidSearchMatlind(linknode*hm,ints)//查找元素

{

intm,n,k;

n=hm->

k=1;

while(k)

if((p->

node.v)==s)

printf("

\n\t\t行列值\n"

\n\t\t元素位置:

%2d%2d%2d\n"

rows,p->

cols,p->

k=0;

elseif(p->

p=p->

else

p=q;

q=p=p->

if(p==hm)

\n\t\t十字链表中无此元素!

\n"

voidmain()

ints,k,ch=1;

intchoice;

linknode*hm=NULL;

while(ch)

\n"

\n\t\t稀疏矩阵的十字链表存储系统\n"

\n\t\t********************************************"

\n\t\t*1-----新建十字链表*"

\n\t\t*2-----显示十字链表*"

\n\t\t*3-----查找元素*"

\n\t\t*0-----退出*"

\n\n\t\t请输入菜单号:

%d"

choice);

switch(choice)

case1:

hm=CreateMatlind();

//调用创建空十字链表函数

do

\n\t\t请输入稀疏矩阵的元素个数:

scanf("

s);

if(s>

((hm->

rows)*(hm->

cols)))

{

printf("

\n\t\t元素个数超标!

应小于%d个\n"

hm->

rows*hm->

cols);

k=1;

}

else

k=0;

}while(k);

hm=InputMatlind(hm,s);

//调用输入非零元素函数

break;

case2:

if(hm==NULL)

\n\t\t链表为空!

else

ShowMatlind(hm);

case3:

\n\t\t请输入您要查找的元素:

SearchMatlind(hm,s);

//调用查找非零元素函数

case0:

ch=0;

if(choice==1||choice==2||choice==3)

system("

pause"

cls"

4、测试数据与实验结果(可以抓图粘贴)

5、结果分析与实验体会

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

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2