typedef struct OLNode{

int  i,j;                 //该非零元的行列下标

ElemType    e;

struct  OLNode    *right  ,*down;      //该非零元所在行表、列表的后继链域

}  OLNode;   *OLink;

typedef  struct {

OLink  *rhead ,   *chead;     //行和列 链表头指针向量基址 由CreateSMatrix分配

int     mu,nu,tu;                  //稀疏矩阵的行数列数及非零元个数

} CrossList;

Status CreateSMatrix_OL(CrossList  &M)

{         //创建稀疏矩阵M    采用十字链表存储表示

if(M)

{

free(M);

}

scanf(&m,&n,&t); //输入M的行数列数和非零元个数

M.mu = m;

M.nu= n;

m.tu = t;

if(!(M.rhead = (OLink *)malloc(sizeof(OLink)*(m+1))))

exit(OVERFLOW);

if(!(M.chead = (OLink *)malloc(sizeof(OLink)*(n+1))))

exit(OVERFLOW);

M.rhead[] = M.chead[] = NULL;         //初始化行列头指针向量,各行列链表为空链表

for(scanf(&i,&j,&e); i != 0 ; scanf(&i,&j,&e))

{  //按任意次序输入非零元

if(!(p = (OLNode *)malloc(sizeof(OLNode))))

exit(OVERFLOW);

p->i = i;

p->j = j;

p->e = e;    //创建新节点

if(M.rhead[i] ==NULL || M.rhead[i].j > j)

{

p->right = M.rhead[i];

M.rhead[i] = p;

}

else

{

for(q = m.rhead[i];(q->right) && q->right->j right);

p->right = q->right;

q->right = p;

}   //完成行插入

if(M.chead[j] == NULL || M.rhead[j]->i >i)

{

p->dowm = M.chead[j];

M.chead[j] = p;

}

else

{

for(q = M.ched[j]; (q->down) && q->down->i < i; q= q->down);

p->down = q->down;

q->down = p;      //完成列插入

}

}

}

稀疏矩阵十字链表类java_稀疏矩阵的十字链表存储表示相关推荐

  1. 模拟STL链表类的实现

    模拟STL链表类的实现 STL内部定义了多种容器和迭代器,方便了数据结构类的使用,且不需关注内部源码.为了方便个人使用习惯,我又重写了一个链表类,作为学C++后的第一个项目作业.我将其命名为clist ...

  2. 稀疏矩阵——实现三元组,十字链表下的稀疏矩阵的加、转、乘的

    稀疏矩阵应用: 实现三元组,十字链表下的稀疏矩阵的加.转.乘. 代码: #include<iostream> using namespace std; typedef int ElemTy ...

  3. java稀疏矩阵_《矩阵》——稀疏矩阵(Java)

    转载请注明出处: 转载自  Thinkgamer的CSDN博客:blog.csdn.net/gamer_gyt 1:稀疏矩阵的背景 2:什么是稀疏矩阵? 3:为什么要对稀疏矩阵进行压缩存储以及压缩存储 ...

  4. 稀疏矩阵三元组 严蔚敏_Sparse稀疏矩阵主要存储格式总结

    在数据科学和深度学习等领域会采用矩阵来存储数据,但当矩阵较为庞大且非零元素较少时,运算效率和存储有效率并不高.所以,一般情况我们采用Sparse稀疏矩阵的方式来存储矩阵,来提高存储和运算效率.下面将对 ...

  5. 数据结构课本学习 --单链表类定义

    单链表的类定义: 复合类: class List;class LinkNode{ //结点类定义 friend class List; //List类所有成员可以使用LinkNode的私有成员,反过来 ...

  6. VC里的集合类、链表类、映射类

    集合类是用来容纳和处理一组对象或标准数据类型变量的C++类.每个集合类对象可以看作一个单独的对象.类成员函数可作用于集合的所有元素.MFC提供两种类型的集合类: 基于模板的集合类.非基于模板的集合类. ...

  7. 1.使用C++封装一个链表类LinkList

     使用C++封装一个链表类LinkList.写出相应一个测试用例 链表需要提供 添加 修改删除 除重 合并 排序创建 销毁等接口. 不能调用库函数或者使用STL等类库 题目延伸********** ...

  8. c语言三元组稀疏矩阵的转置实验报告,稀疏矩阵快速转置 数据结构实验报告

    南昌航空大学实验报告 课程名称: 数据结构 实验名称: 实验五 稀疏矩阵的存储和快速转置 班 级: 学生姓名: 学号: 指导教师评定: 签 名: 题目:假设稀疏矩阵A采用三元组表表示,编写程序实现该矩 ...

  9. 实验8.1 链表类的定义与实现

    题目 参照教材中链表类LinkedList的定义(教材中的例程9-6.h),给出其实现,注意合理使用Node类(教材中的例程9-3.h)的成员函数.在测试程序中定义整型链表A和B,分别插入5个元素,使 ...

最新文章

  1. php字符串定义为arraylist,如何把arraylist集合中的字符串数据保存的文本文件中
  2. OpenCV读写YAML/XML文件
  3. tensorflow实战google深度学习框架在线阅读
  4. 如何设置多个图层层叠关系_凉山车载式叠螺污泥脱水机_山东领旗环保科技
  5. C#遍历文件读取Word内容以及使用BackgroundWorker对象打造平滑进度条
  6. 浅析MongoDB数据库的海量数据存储应用
  7. Android 基础—— 对Context的理解与使用技巧
  8. linux raid livecd,liveCD,liveDVD,binDVD版本区别Centos
  9. EBS 报表输出PDF时中文乱码
  10. 错过后悔十年!计算机视觉入门到精通,学习书籍推荐
  11. Tomcat压缩传输设置
  12. IAR编译器问题的总结
  13. ccs8烧写与擦除dsp2812FLASH的方法
  14. fw150r虚拟服务器设置,迅捷 FW150R 无线路由器端口映射设置指南
  15. figma学习记录 快捷键 工具了解(1)
  16. WOL(Wake On LAN - 局域网唤醒)外网唤醒 配置教程 远程开机
  17. 矩阵关于26的模逆matlab,给定加密矩阵在模运算下的逆矩阵.ppt
  18. 【漫漫转码路】Day 38 C++ day09
  19. SWAT—Samba WEB管理工具
  20. [KALI] 新装KALI自动化配置

热门文章

  1. 一个用于SAP UI5学习的脚手架应用,没有任何后台API的依赖
  2. SAP CRM系统里的附件存储逻辑
  3. 在SAP WebIDE里开发一个React component
  4. SAP UI5 another way to change reuse library locally from Yang
  5. 在SAP Cloud Platform ABAP编程环境里打印系统变量
  6. Jerry Wang的CRM中间件培训 Middleware
  7. ABAP Smart Help调试截图
  8. system table CRMC_BO_RANGES
  9. 使用代码创建具有organization unit的opportunity
  10. 如何定制化SAP Spartacus的页面路由Route