广义表存储结构图的绘制

您所在的位置:网站首页 掷弹筒炮弹结构图怎么画 广义表存储结构图的绘制

广义表存储结构图的绘制

2024-06-25 22:59| 来源: 网络整理| 查看: 265

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

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

说明如下

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

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

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

绘图要点:

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

表结点 表结点

原子节点 原子节点

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

我的绘图过程:

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

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

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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3