欢迎来到天天文库
浏览记录
ID:26755977
大小:98.50 KB
页数:5页
时间:2018-11-29
《八稀疏矩阵和广义表》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验八稀疏矩阵和广义表实验日期:2010年5月7日实验地点:实验室(四)实验名称:稀疏矩阵和广义表实验目的与要求:(1)掌握稀疏矩阵三元组表的存储、创建、显示、转置和查找等方法。(2)掌握广义表的存储、新建、显示和查找等方法。(3)掌握稀疏矩阵三元组表和广义表的算法分析方法。实验内容:1、问题描述一个阶数较大的矩阵中的非零元素个数s相当于矩阵元素的总个数t十分小时,称该矩阵为稀疏矩阵。稀疏矩阵的压缩方法是只存储非零元素。由于稀疏矩阵中非零元素的分布没有任何规律,所以在存储非零元素时还必须同时存储该非零元素所对应的行下标和列下标。若把稀疏矩阵的三元组线性表按顺序存储结构存储,则称为稀疏矩阵
2、的三元组顺序表。广义表是线性表的推广。在广义表中,要求各原子具有相同的类型,但允许各子表具有不同的结构。广义表通常用链式存储结构进行存储,链表中的每个结点对应广义表中的一个元素。对于原子元素,sublist和link都是指针域,前者是子表,后者指向下一个元素。2、数据结构设计稀疏矩阵三元组表的数据类型:#defineSMAX100//三元组非零元素的最大个数structSPNode//定义三元组{inti,j,v;//三元组非零元素的行、列和值};structsparmatrix//定义稀疏矩阵{introws,cols,terms;//稀疏矩阵行、列和非零元素的个数SPNodedata
3、[SMAX];//三元组表};广义表的数据类型:structlinknode//定义广义表{inttag;//区分原子项或子表的标志位linknode*link;//存放下一个元素的地址uniondata_sublist{chardata;//存放原子值linknode*sublist;//存放子表的指针}node;};1、功能函数说明稀疏矩阵三元组表的基本操作:sparmatrixCreateSparmatrix()//创建稀疏矩阵sparmatrixTrans(sparmatrixA//转置稀疏矩阵voidShowSparmatrix(sparmatrixA)//显示稀疏矩阵void
4、SearchSparmatrix(sparmatrixA,ints)//查找稀疏矩阵中非零元素voidsparmatrix()//稀疏矩阵的三元组存储广义表的基本操作:voidDisastr(chars[],charhstr[])linknode*CreatGL(chars[])//创建广义表voidShowvl(linknode*gnode//显示广义表intSearch(linknode*gnode,charx)//广义表中的元素2、界面设计1、编码实现(见源代码)2、运行测试1、实验小结利用inti,j,v;来表示三元组非零元素的行、列和值,因此来实现稀疏矩阵的创建,转置,显示,查
5、找以及存储。定义广义表来实现广义表的创建,显示和查找等功能。
此文档下载收益归作者所有