动态存储的边界标识法中llink和uplink为什么要用union?

最近在看数据结构,动态存储的边界标识法有点疑问

typedef struct WORD{

    union{

        struct WORD *llink;     //指向直接前驱

        struct WORD *uplink;  //指向结点本身

    };

    int tag;                             //标记域,0表示为空闲块;1表示为占用块

    int size;                            //记录内存块的存储大小

    struct WORD *rlink;         //指向直接后继

    OtherType other;             //内存块可能包含的其它的部分

}WORD,head,foot,*Space;

llink和uplink为什么要用union?有什么效果呢?

union是一种比较古老的写法了,这会让所有union的成员变量共享同一个内存空间。如果修改了成员变量其中的任何一个,都会导致另一个也随之变化。

也就是说,在这里,link和uplink在数值上是相同的。当本内存块为头结点的时候,就将这个union指向自己;否则,就将这个union指向他的直接前驱节点。可以通过判断每块节点指向的地址是否是自己,来判断当前节点是头结点还是其余节点。

您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

公用内存,节省空间,在某些情况下使用也比较灵活

union
{

    float fvalue;
    short sValue;
    int nValue;
    
}

你只是要存储一个值,但是值的类型需要另外判断,使用union的话就不用每种类型都增加空间的占用了。