ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:22.27KB ,
资源ID:21194470      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21194470.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(山东大学数据结构实验报告四Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

山东大学数据结构实验报告四Word格式文档下载.docx

1、 bool Insert(int k); bool Search(int k); void print();private: int d; ChainHashTableNode *ht;ChainHashTableNode.cpp#include ChainHashTable.h#includeChainHashTable:ChainHashTable(int divisor) d = divisor; ht = new ChainHashTableNoded;bool ChainHashTable:Insert(int k) int j = k%d; if (htj.Insert(k) re

2、turn true; else return false;void ChainHashTable:print() for (int i = 0; i d; i+) hti.print();Node.hclass ChainHashTableNode ChainHashTableNode(); Node *first;#include value = k) return true; current = current-link; if (current) if (current- return true; return false; if (Search(k) cout 已经存在此元素 valu

3、e = k; if (first = 0) first = p; else p-link = first;void ChainHashTableNode: if (first) while (first) cout value first = current; -1 HashTable.hclass HashTable HashTable(int divisor); HashTable(); int Search(int k);/搜索算法 bool Insert(int e); int hSearch(int k);/除数 int *ht;/桶,大小取决于d就是除数是多少 bool *empt

4、y;/一维数组,用来存储第I个桶是否存入了元素HashTable.cppHashTable.hHashTable:HashTable(int divisor) ht = new intd; empty = new boold; emptyi = true; hti = 0;HashTable() deleteht; deleteempty;int HashTable:hSearch(int k)/搜索值为K的元素 int i = k%d; int j = i; do if (htj = k | emptyj) return j; j = (j + 1) % d; while (j != i);

5、 return j;Search(int k)/搜索值为K的元素 int b = hSearch(k); if (htb = k) return b; return -1;bool HashTable:Insert(int e) int b = hSearch(e); if (emptyb) htb = e; emptyb = false; else if (htb = e) else表已经满了void HashTable: 961; i+) hti cout return;LowerTriangularMatrix.hclass LowerTriangularMatrix LowerTria

6、ngularMatrix(int size); void Store(int x, int i, int j);/向矩阵里存储一个元素 int Retrieve(int i, int j);/返回矩阵中的一个元素 int n;/矩阵维数 int sum;/矩阵非零元素个数 int *t;/用数组来存储矩阵LowerTriangularMatrix.cppLowerTriangularMatrix.hLowerTriangularMatrix:LowerTriangularMatrix(int size) n = size; sum = n*(n + 1) / 2; t = new intsum

7、;void LowerTriangularMatrix:Store(int x, int i, int j) if (i0 | j= n | j = n)下三角矩阵行列输入错误 j return; else if (x = 0)下三角所添加的元素必须非零 else if (i= (n - 1)三对角矩阵行列输入错误 return -1; else if (i = j) return tsum - (n - j)*(n - j + 1) / 2) + (i - j); return 0; sum; ti Node.hclass Node friend class ChainHashTableNo

8、de; int value; Node *link;Node.cppSparseMatrix.hTerm.hclass SparseMatrix SparseMatrix(int row, int col); void transpose(); void Add(SparseMatrix &b);/两个稀疏矩阵相加 int row, col;/数组维数/元素个数 int maxsum;/最多的元素个数 Term *t;/存储的数组SparseMatrix.cppSparseMatrix.hSparseMatrix:SparseMatrix(int r, int c) row = r; col

9、= c; sum = 0; maxsum = r*c; t = new Termmaxsum;void SparseMatrix:transpose() Term *cur = new Termmaxsum; int *ColSize = new intcol; int *RowNext = new introw; col; i+) ColSizei = 0; row; i+) RowNexti = 0; i+) ColSizeti.col+;/表示每一列的非零元素个数 RowNext0 = 0; for (int i = 1; i+) RowNexti = RowNexti - 1 + Co

10、lSizei - 1;/表示新矩阵中每一行的矩阵的前面的矩阵的个数 /进入转置操作 int j = RowNextti.col+; curj.value = ti.value; curj.col = ti.row; curj.row = ti.col; delete t; t = cur; tsum.value = x; tsum.row = i; tsum.col = j; sum+; ti.value Add(SparseMatrix &b)/两个稀疏矩阵相加 if (col != b.col | row != b.row)两个矩阵行列不同无法相加 int sa = 0; int sb =

11、 0; int k = 0; while (sa sum | sb b.sum) if (tsa.col = b.tsb.col&tsa.row = b.tsb.row) curk.col = tsa.col; curk.row = tsa.row; curk.value = tsa.value + b.tsb.value; k+; sa+; sb+; else if (tsa.row curk.value = b.tsb.value; curk.row = b.tsb.row; curk.col = b.tsb.col; else if (tsa.col 1)三对角矩阵添加元素位置错误 sw

12、itch (i - j) case -1: t3 * j - 1 = x; break; case 0: t3 * j = x; case 1: t3 * j + 1 = x;int TridiagonalMatrix: else if (abs(i - j) cstdlibint wei, num100100;void c() wei; for (int j = 0; j+) cin numij;int main() int k = 0, l = 0; /*三对角矩阵实验开始 测试数据4103n-2 4 1 2 0 0 3 4 5 0 0 7 8 9 0 0 8 7 */请输入三对焦矩阵维数及容: cin c(); TridiagonalMatrix *TM = new TridiagonalMatrix(wei); if (numji != 0) TM-Store(numji, j, i); TM-print();请输入要查询的元素的位置 k l; l = TM-Retrieve(k, l);查询结果: l * /*下三角矩阵实验开始 测试数据410n*(n+1)/2 1 0 0 0 2 3 0 0 4 5 6 0

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

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