实验6-稀疏矩阵十字链表的存储.doc

-/电子信息学院实验报告书课程名 数据结构 题 目 稀疏矩阵十字链表的存储 实验类别 设计 班 级 BX1001 学 号 24 姓 名 肖望龙 2011年 10 月 23日-/1、 实验题目(1 掌握稀疏矩阵十字链表存储的方法。(2 掌握稀疏矩阵的显示、查找等基本方法。2、 实验内容(1) 创建空的稀疏矩阵的十字链表存储结构。(2) 稀疏矩阵十字链表的数据输入。(3) 稀疏矩阵十字链表的数据显示。(4) 稀疏矩阵十字链表的数据查找。3、 实验要求(1) 利用C或c语言完成算法设计和程序设计。(2) 上机调试通过实验程序。(3) 输入右侧矩阵A,检验程序运行结果。(4) 给出具体的算法分析,包括时间复杂度和空间复杂度。(5) 撰写实验报告(把输入实验数据及运行结果用抓图的形式粘贴到实验报告上)。4、 实验步骤与源程序 实验步骤1、 建立一个空的十字链表2、 输入链表信息3、 输入链表元素4、 查找链表元素5、 显示链表元素 源代码includeiostream.hincludestdio.hincludeiomanip.hincludestdlib.hstruct linknodeint rows,cols;linknode *down,*right;union vnextint v;linknode *next;node;;linknode *CreateMatlind int i,j,maxlin;linknode *hm,*cp100,*p;printfntt请输入稀疏矩阵的行数,列数用逗号隔开 ;scanfd,d,if ij maxlini;else maxlinj;hmnew linknode;cp0hm; for int l1;lmaxlin;lpnew linknode;p-rows0;p-cols0;p-downp;p-rightp;cplp;cpl-1-node.nextp;cpmaxlin-node.nexthm;hmnew linknode;hm-rowsi;hm-colsj;return hm; linknode *Matlindlinknode *hm,int s linknode *cp100,*p,*q;int m,n,t;int i,j,k,maxlin;ihm-rows;jhm-cols;if ij maxlini;else maxlinj;cp0hm;for int l1;lmaxlin;lpnew linknode;p-rows0;p-cols0;p-downp;p-rightp;cplp;cpl-1-node.nextp;cpmaxlin-node.nexthm;for int x0;xs;xprintfntt请输入非零元的行号,列号和值用逗号隔开 ;scanfd,d,d,pnew linknode;p-rowsm;p-colsn;p-node.vt;k1;qcpm;while kif q-rightcpm || q-right-colsnp-rightq-right;q-rightp;k0;else ifq-right-colsnp-rightq-right-right;q-rightp;k0;else ifq-right-colsnqq-right;k1;k1;qcpn;while kif q-downcpn || q-down-rowsmp-downq-down;q-downp;k0;else if q-down-rowsmp-downq-down-down;q-downp;k0;else if q-down-rowsmqq-down;k1;return hm;void ShowMatlindlinknode *hm int m,n;linknode *p,*q;mhm-rows;nhm-cols;qphm-node.next;pp-right;coutendlendl;printfntt;for int i1;im;ifor int j1;jn;jif p-rowsi else printf8c,0;if jn else if p-rightqpp-right;printfnntt;pq;qpp-node.next;pp-right;void SearchMatlindlinknode *hm,int s int m,n,k;linknode *p,*q;mhm-rows;nhm-cols;qphm-node.next;pp-right;k1;whilekif p-node.vsprintfntt 行 列 值n;printfntt元素位置2d 2d 2dn,p-rows,p-cols,p-node.v;k0;else if p-rightqpp-right;else pq;qpp-node.next;if phmprintfntt十字链表中无此元素 n;k0;pp-right;void mainint s,k,ch1;linknode *hmNULL;printftn新建十字链表; hmCreateMatlind; do printfntt请输入非零元素个数 ;scanfd,if shm-rows*hm-colsprintfntt元素个数超标 应小于d个n,hm-rows*hm-cols;k1;elsek0;while k;hmMatlindhm,s; printfn显示十字链表;if hmNULLprintfntt链表为空 n;elseShowMatlindhm;printfn查 找 元 素;if hmNULLprintfntt链表为空 n;elseprintfntt请输入您要查找的元素 ;scanfd,SearchMatlindhm,s; 5、 测试数据与实验结果(可以抓图粘贴)6、 结果分析与实验体会实验结果基本达到了实验要求。用十字链表存储稀疏矩阵的基本思想是把每个非零元素作为一个节点存储,节点中除了表示元素的行、列、值的三元组(I,j,v)以外还增加了俩个指针域列指针域down用来指向本列的下一个非零元素;行指针域指向本行的下一个非零元素知道了这些,实验就方便了,虽然还有很多不完善。但多做练习才能更加熟练的使用稀疏矩阵。

稀疏矩阵建立十字链表c语言,实验6-稀疏矩阵十字链表的存储.doc相关推荐

  1. C语言链表学生成绩制作成链表,C语言程序设计课程设计基于链表的学生成绩管理系统.doc...

    C语言程序设计课程设计基于链表的学生成绩管理系统 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 10 页 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C语言程序设计 实验学 ...

  2. 逆向链表c语言 abcdef,6-6 求单链表元素序号 (5 分)

    本文最后更新于742天前,其中的信息可能已经有所发展或是发生改变. 本题要求实现一个函数,求带头结点的单链表中元素序号. 函数接口定义: int Locate ( LinkList L, ElemTy ...

  3. 逆置单链表c语言程序,逆置单链表C语言

    /*10.2-7-2011-05-08-19.40.c -- 第十章第二节第七题*/ #include #include /*明显常量定义*/ #define FALSE (0) #define TR ...

  4. c语言结果用全局变量返回,c语言参数传递和返回值及变量存储.doc

    unsigned int n; void f1(); int f2(int,int); void far f3(); main() { n=0; f1(); n=f2(1,2); f3(); } vo ...

  5. noj数据结构稀疏矩阵的加法十字链表_数据结构学习(C )稀疏矩阵(十字链表1)

    CSDN 先说说什么叫稀疏矩阵. 你说, 这个问题很简单吗, 那你一定不知道中国学术界的嘴皮子仗, 对一个字眼的"抠"将会导致两种相反的结论.这是清华 2000 年的一道考研题:& ...

  6. 十字交叉链表c语言,C语言课程设计报告—十字交叉链表的应用.doc

    C语言课程设计报告-十字交叉链表的应用 PAGE \* MERGEFORMAT 13 华中科技大学计算机科学与技术学院 C语言程序设计课程设计实验报告 题目:水产品养殖信息管理系统 专业: 计算机科学 ...

  7. 数据结构 实验14(1-2班):(深入理解索引存储结构)三元组存储的稀疏矩阵建立行列索引并求鞍点

    目录 前言: 需求分析: 难点分析: 代码和思路详解: 三元组表的头文件: 建立索引思路: 什么是三元组表的索引: 结合题意实现索引表: 建立索引表的代码实现: 索引表的结构体定义: 索引表的创建思路 ...

  8. c语言单链表的查找,单链表的查找、建立操作(C语言)

    一.单链表的查找(带头结点) (一)按位查找 GetElem(L,i):按位查找操作.获取表L中第i个位置的元素的值. //按位查找,返回第i个元素(带头结点) LNode * GetElem(Lin ...

  9. c语言三元组稀疏矩阵的转置实验报告,稀疏矩阵三元组实现矩阵转置算法实验报告.doc...

    稀疏矩阵三元组实现矩阵转置算法实验报告.doc 1实验三稀疏矩阵的三元组表示实现矩阵转置算法学院专业班学号姓名一.实习目的1掌握稀疏矩阵的三元组顺序表存储表示:2掌握稀疏矩阵三元组表示的传统转置算法的 ...

最新文章

  1. Ubuntu16.04下arm-linux-gcc交叉编译环境搭建
  2. 为什么会需要HTTPS?
  3. 算法周记(一)直接插入排序
  4. 项目中遇到的Integer问题--转
  5. 【干货】深入B端SaaS产品设计核心理念
  6. 已知服务器ftp的账号密码,求解数据库表的内容
  7. Linux内核判断大小端,linux kernel 如何处理大小端
  8. java 倒序分页_翻动100万级的数据(自定义的MSSQL分页查询过程)
  9. 浅谈关于nil和 null区别及相关问题
  10. 漫画:如何用Zookeeper实现分布式锁?
  11. 【渝粤教育】国家开放大学2018年春季 0064-22T20世纪欧美文学 参考试题
  12. 线性表----顺序表
  13. 前端学习(1411):多人管理31数据分页2
  14. 审车按月还是日期_@老司机,你该审车了,秒懂的审车攻略,快快揣口袋吧
  15. 九.jmeter性能测试基础实践(1)
  16. php tr td,php-基于tr计数的Td / th的XPath
  17. 什么是线程安全性,如何保证线程安全*
  18. html5贝塞尔函数,径向偏振高阶贝塞尔-高斯涡旋光束的传输及其偏振特性
  19. python 一元二次方程计算器
  20. 五子棋网络对战 java实现

热门文章

  1. php 迭代设计模式 -- BookList -- 分页
  2. 格密码教程(六):高斯二维格规约,解决SVP问题
  3. 只有22%的人做对了这道数据分析题,你来试试吗?
  4. 从单体到Flink:一文读懂数据架构的演变
  5. Python实操:手把手教你用Matplotlib把数据画出来
  6. Altium Designer之原理图
  7. dsp广告和信息流广告区别_360展示广告与其他信息流平台的区别
  8. 别再用if-else了,用注解去代替他吧
  9. 去掉烦人的 “ ! = null (判空语句)
  10. 亿级流量 | 蚂蚁金服分布式事务实践解析