- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 集合、稀疏矩阵和广义表
第3章 集合、稀疏矩阵和广义表
【习题3-1】按要求进行稀疏矩阵运算。
已知一个稀疏矩阵,如图3-13所示。
0 4 0 0 0 0 0
0 0 0 -3 0 0 1
8 0 0 0 0 0 0
0 0 0 5 0 0 0
0 -7 0 0 0 2 0
0 0 0 6 0 0 0
图3-13 具有6行7列的一个稀疏矩阵
1、写出它的三元组线性表。
解:((1,2,4),(2,4,-3),(2,7,1),(3,1,8),(4,4,5),(5,2,-7),(5,6,2),(6,4,6))
2、给出它的顺序存储表示。
解:
下标
Row
Col
Val
1
1
2
4
2
2
4
-3
3
2
7
1
4
3
1
8
5
4
4
5
6
5
2
-7
7
5
6
2
8
6
4
6
?
3、给出它的转置矩阵的三元组线性表和顺序存储表示。
解:
三元组线性表:((1,3,8),(2,1,4),(2,5,-7),(4,2,-3),(4,4,5),(4,6,6),(6,5,2),(7,2,1))
顺序存储表示:
下标
Row
Col
Val
1
1
3
8
2
2
1
4
3
2
5
-7
4
4
2
-3
5
4
4
5
6
4
6
6
7
6
5
2
8
7
2
1
?
4、给出对它进行快速转置时,num向量中各分量的值。
解:
Col
1
2
3
4
5
6
7
Num[col]
1
2
0
3
0
1
1
?
5、给出对它进行快速转置前和转置后,pot向量中各分量的值。
解:
Col
1
2
3
4
5
6
7
Pot[col](前)
1
2
4
4
7
7
8
Pot[col](后)
2
4
4
7
7
8
9
?
【习题3-2】按要求进行广义表运算。
画出下列每个广义表的带表头附加结点的链接存储结构图并分别计算它们的长度和深度。
1、A=(( ))
2、B=(a,b,c)
3、C=(a,(b,(c)))
4、D=((a,b),(c,d))
5、E=(a,b,(c,d)),(e))
6、F=((a,(b,( ),c),((d),e)))
解:
题号
1
2
3
4
5
6
长度
1
3
2
2
3
1
深度
2
1
3
2
3
4
?
【习题3-3】写出下列每个主程序段的运行输出结果。
1、
void main()
{
Set a;
InitSet(a);
ElemType r[8]={1,5,90,5,7,25,34,16};
int i;
for(i=0;i8;i++)
InsertSet(a,r[i]);
ElemType x=25,y=90;
DeleteSet(a,x);
DeleteSet(a,y);
OutputSet(a);
coutEmptySet(a) LenthSet(a)endl;
}
解:
1 5 34 7 16
0 5
2、
void main()
{
ElemType r[8]={1,5,90,5,7,25,34,16};
ElemType r1[6]={5,60,16,30,34,8};
Set a; InitSet(a);
Set b; InitSet(b);
Set c; InitSet(c);
int i;
for(i=0;i8;i++)
InsertSet(a,r[i]);
for(i=0;i6;i++)
InsertSet(a,r1[i]);
UnionSet(a,b,c);
OutputSet(c);
InterseSet(a,b,c);
OutputSet(c);
DifferenceSet(a,b,c);
OutputSet(c);
ClearSet(a);
ClearSet(b);
ClearSet(c);
}
解:
1 5 90 7 25 34 16 60 30 8
5 16 34
1 90 7 25
3、
void main()
{
ElemType r[8]={1,5,90,5,7,25,34,16};
SNode* a;
InitSet(a);
int i;
for(i=0;i8;i++)
InsertSet(a,r[i]);
OutputSet(a);
ElemType x=34;
DeleteSet(a,x);
InsertSet(a,48);
x=5;
DeleteSet(a,x);
OutputSet(a);
ClearSet(a);
}
解
文档评论(0)