【数据结构】Orthogonal-List 十字链表(更新时间:2016-04-15)

Orthogonal-List 十字链表(更新时间:2016-04-15)

在课上边听着哈希表,便看着科比告别直播,边写这个十字链表,23333,感觉好充实。
果然,在看完科比最后一场比赛神奇的演出之后,当天就不想好好学习了,就拖了一天。

十字链表
十字链表是一维链表的扩展,通过将以一个指针域扩展到两个指针域使得链表能够以二维的形式串联起来,我们可以形象的使用二维数组来描述十字链表(实际实现效果基本与二维数组无异)。
在定义结构的时候,Doge使用了union来复合使用Data域从而使得我们不需要重新定义新的行列头节点。
对于Insert()以及Find()这类的函数实现的时候所需要用到的遍历操作,Doge均采用先访问行,在访问列的方式直接去查找。
另外Delete()的实现与Insert()的实现基本没有差异,只是在搜索的时候返回的是前驱结点然后将其从十字链表中移除即可,Doge在这里就不给出了,留待读者自行编写。
十字链表的删除实质上等价于先将每一行(或者每一列,二选一即可)的链表进行删除,再将行列头数组删除即可,均使用free()函数来释放空间。
十字链表最经典的应用就是用于计算稀疏矩阵,之后Doge会将自己做的矩阵运算整理后上传。
下面直接给出代码示例:

struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode OList;                //十字链表头指针定义
typedef PtrToNode OLNode;               //十字链表节点定义
typedef int ElementType;                //十字链表数据类型定义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值