当前位置:   article > 正文

广义表存储结构图的绘制_广义表的存储结构图怎么画

广义表的存储结构图怎么画

最近看到广义表存储结构图绘制这一节,自以为课本上的例子看懂了,但是一上手画就出错,网上基本搜不到比较详细的解答,就自己试着去思考,总算是会了,先记录下来,免得后面又忘了。

先上结果:
在这里插入图片描述

说明如下

广义表里面一旦包含多个子表就会有很多括号,往往看的人无比痛苦,很容易搞错,于是先把大体层次框出来,分清楚每个括号的对应关系,便于后续过程。

画图形表示时,根据课本,列表用圆形表示,原子用方形(这里懒得画就省略了),画出相应的对应关系。

为什么要给表编号:课本上为了讲解表中元素亦可能是表,给出的例子就是编了号的,因为但是一般习题中直接给一个广义表,不编号。本人在多次尝试中,发现对于我来说只有经过编号这一步我才画的对,不然根本画不出来,所以就加了这一步。编不编号都行。

绘图要点:

  1. 广义表有两种节点,表结点和原子节点。

表结点
表结点

原子节点
原子节点

  1. 除了空表的表头指针为空外,对任何非空列表,其表头指针均指向一个表结点,且该结点中的hp域指示列表表头(或为原子节点,或为表结点),tp域指向列表表尾(表尾为空则指针为空,否则必为表结点)

我的绘图过程:

  1. 从根节点开始,tp域连接本节点的分支,有几个就画几个,最后一个的tp域置为空指针
  2. 遍历根节点各子节点,若是子表,则重复1,否则直接绘制相应原子节点
  3. 对于仅含有一个空表为元素的表,将其hp域置为空指针
  4. 直到所有节点都画完

以上描述为了通顺有点刻板,真实操作步骤是:先把根节点对应的那一层画出来,有几个分支就画几个,然后对于所有非叶节点的子表(有大写字母的),在保证他们都各有一层的前提下进行绘制,最后画出原子节点,擦掉标注的指针即可。

最终结果如下:
在这里插入图片描述

感觉画这个图最困难的就是在多层括号时确定在图中到底有几层,看了很久才得到的这个办法,不知道是否正确,反正做了四个题都没错,就这样吧,帖子太难写了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/675128
推荐阅读
相关标签
  

闽ICP备14008679号