博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
稀疏矩阵十字链表存储表示
阅读量:4591 次
发布时间:2019-06-09

本文共 1716 字,大约阅读时间需要 5 分钟。

#include 
using namespace std;#define OK 1#define ERROR 0typedef int ElemType;typedef int Status;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){ int m, n, t, i, j, e; OLNode *p, *q; printf("input row 、col、total num:\n"); scanf("%d%d%d",&m, &n, &t); M.mu = m; M.nu = n; M.tu = t; if (!(M.rhead = (OLink *)malloc((m + 1)*sizeof(OLink)))) return ERROR; if (!(M.chead = (OLink *)malloc((n + 1)*sizeof(OLink)))) return ERROR; for ( i = 0; i <= m; ++i) M.rhead[i] = NULL; for ( i = 0; i <= n; ++i) M.chead[i] = NULL; for (scanf("%d%d%d", &i, &j, &e); i != 0; scanf("%d%d%d", &i, &j, &e)) { if (!(p = (OLNode *)malloc(sizeof(OLNode)))) return ERROR; 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 < j; q = q->right); p->right = q->right; q->right = p; } //完成行插入 if (M.chead[j] == NULL||M.chead[j]->i > i) { p->down = M.chead[j]; M.chead[j] = p; } else { //寻查在列表中的插入位置 for (q = M.chead[j];(q->down) && q->down->i < i; q = q->down); p->down = q->down; q->down = p; } //完成列插入 } return OK;}

 

转载于:https://www.cnblogs.com/gjfhopeful/p/3621110.html

你可能感兴趣的文章
Jmeter做接口的压力测试
查看>>
sql语句优化的30种方法
查看>>
MyISAM和InnoDB的区别
查看>>
springboot2.0 management.security.enabled无效
查看>>
spring cloud启动zipkin,报错maven依赖jar包冲突 Class path contains multiple SLF4J bindings
查看>>
源发行版8需要目标发行版1.8
查看>>
Cleartext HTTP traffic to xxx not permitted解决办法
查看>>
[Docker] Win10中安装Docker并运行Nginx镜像
查看>>
pxe批量装机
查看>>
linux典型应用对系统资源使用的特点
查看>>
linux性能分析工具Procs
查看>>
linux性能分析工具Vmstat
查看>>
linux性能分析工具Memory
查看>>
c# 选择结构
查看>>
c# 委托
查看>>
c# 接口使用
查看>>
c# 事件
查看>>
c# as运算符
查看>>
c# 调试过程
查看>>
c# 结构
查看>>