- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
山东大学 数据构实验报告 矩阵和散列表
山东大学计算机科学与技术学院
数据结构课程实验报告
?
学号:
姓名:徐大鹏
班级:
实验题目:实验四_矩阵和散列表
实验学时:2
实验日期:2015.11.24
实验目的:
掌握特殊矩阵和稀疏矩阵。
掌握散列表及其应用。
硬件环境:?
略
软件环境:
Ubuntu Kylin 15.04 64-bit
Linux GCC 4.9.2
Java SE Runtime Environment (build 1.8.0_60-b27)
Eclipse IDE for C/C++ Developers Mars.1 Release (4.5.1)
实验内容与设计:
实验内容(题目内容,输入要求,输出要求)
(1)创建三对角矩阵类,采用按列映射方式,提供store和retrieve 方法。
(2)创建下三角矩阵类,采用按列映射方式,提供store和retrieve 方法。
(3)创建稀疏矩阵类,采用行主顺序把稀疏矩阵映射到一维数组中,实现稀疏矩阵的转置和两个稀疏矩阵的加法操作。
(4)使用散列表设计实现一个字典,假设关键字为整数且D为961,在字典中插入随机产生的500个不同的整数,实现字典的建立和搜索操作。分别使用线性开型寻址和链表散列解决溢出。
2.数据结构与算法描述 (整体思路描述,所需要的数据结构与算法)
对问题一,从数学上推导得出三对角方阵列主映射的函数关系式
i = 2c + r - 3
其中i为元素在数组e中的下标, c为列数, r为行数,c≥1且r≥1。以此关系式为TridiagonalMatrix类编写了Store和Retrieve函数,并扩展编写了Input函数和Output函数。
对问题二,从数学上推导得出下三角方阵列主映射的函数关系式
i = n × (c - 1) - 1 + r + c × (1 - c) / 2
其中i为元素在数组e中的下标,n为方阵的大小,c为列数, r为行数,c≥1且r≥1。以此关系式为LowerTriangularMatrix类编写了Store和Retrieve函数,并扩展编写了Input函数和Output函数。
对问题三,仿课本所述,定义Term类作为SparseMatrix类的友元类,包含行、列、值三个要素的成员变量,用Term类的数组实现稀疏矩阵的行主映射存储。查找行为的实现方式是,找到位于目标元素前一行的最后一个元素,再从这个元素开始向下搜索,直到找到和目标元素同一行但是列数小于目标元素的元素a[k-1],然后决定下一步的行为————插入一个新项Term作为a[k]并将已有元素向后移位,还是修改已存在的项a[k]。以此原理编写了Store和Retrieve函数,并扩展编写了Input函数和Output函数。
对问题四,仿照课本例子编写了有序链表类SortedChain、开放寻址的散列表类HashTable、基于有序链表链接的散列表类ChainHashTable,并对这三个类分别扩展编写了Output函数。
测试结果(测试输入,测试输出)
问题一:
问题二:
上图显示了输入不符合下三角方阵约束时,抛出异常并退出程序。
上图是正常运行的结果。
问题三:
普通的输入和输出操作如下:
矩阵相加:
矩阵转置:
问题四:
以上图的数据为例。从346就应该在链表链接的散列表上看到开放寻址解决冲突的例子。返回开放寻址的输出段,可以看到符合预期的结果:
4.实现源代码(程序风格清晰易理解,有充分的注释)
/*
* TridiagonalMatrix.h
*
* Created on: Nov 22, 2015
* Author: xudp
*/
#ifndef TRIDIAGONALMATRIX_H_
#define TRIDIAGONALMATRIX_H_
#include iostream
using namespace std;
templateclass T
class TridiagonalMatrix {
public:
// 1、创建三对角矩阵类,采用按列映射方式,提供 store 和 retrieve 方法。
TridiagonalMatrix(int size = 10);
~TridiagonalMatrix();
// row0, column0
TridiagonalMatrixT Store(int row, int column, const T value);
T Retrieve(int row, int column);
void Input(istream in, ostream out);
void Output(ostream out) const;
friend ostream operator (ostream
您可能关注的文档
最近下载
- 人工胆囊、人工胆囊设备和人工胆囊在胆囊手术中的应用.pdf VIP
- 重力与弹力高一上学期物理人教版2019必修第一册+.pptx VIP
- 胃癌的诊治现状与进展.pptx VIP
- 匀变速直线运动的速度与时间的关系课件 2024-2025学年高一上学期物理人教版(2019)必修第一册.pptx VIP
- 数控压装压力机 第2部分:技术条件.docx VIP
- 【课件】匀变速直线运动速度与时间的关系+课件-高一上学期物理人教版(2019)必修第一册.pptx VIP
- XX医院职能部门监管手术、麻醉授权管理督导、检查、总结、反馈及持续改进记录表.pdf VIP
- 电力调度数据网络接入技术规范及网络拓扑图.doc VIP
- ZZGA高频开关整流器使用说明书.doc
- 危重患者院内转运PPT.pptx VIP
文档评论(0)