码迷,mamicode.com
首页 > 其他好文 > 详细

广义表及其推广

时间:2020-06-29 18:26:58      阅读:55      评论:0      收藏:0      [点我收藏+]

标签:解决   span   结合   def   空间   height   region   列表   单元素   

 

广义表其实是线性表的一种推广,也属于多重链表,他的元素不仅可以是一个单元素也可以是一个广义表。本文介绍 广义表的存储结构和解析union

广义表的存储结构

typedef struct GNode *GList;
struct GNode
{
    int Tag;   // 标志域, 0表示节点是单元素,1表示节点是广义表 
    union           //  子表指针域Sublist 与单元素数据域Data复用,即共用存储空间 
    {
        ElementType Data;
        GList SubList;
    }URegion;
    GList Next; //指向后继节点 
};

这里设置了一个 union 你可以把它看作一个新的结构。

技术图片

 

 我们用 tag 来区分 是数据域还是指针域

技术图片

 

 技术图片技术图片

 

 

 技术图片

 

 这里节点有两种类型 ,先看term类型技术图片图中数据域表示  第二行第二列  值为27

 

再看表头的Term节点技术图片表示这个表有 4行5列  有  7个非零项

 

技术图片

 

这里Term 节点的同一行 ,同一列的循环列表形成  十字链表

技术图片

 

 这里的head是行的头节点也是列的头节点

技术图片

 

注意这里 不论是Term  节点还是 Head节点都有  Down 和 Right  两个指针域  所以我们可以将他们结合成union

 这是十字链表解决问题的思路

 

广义表及其推广

标签:解决   span   结合   def   空间   height   region   列表   单元素   

原文地址:https://www.cnblogs.com/Pigsss/p/13209252.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!