链式存储设计时,链表结点内的存储单元地址是如何分布的?

  • 2019-06-23 11:20:18
  • 5,034 次阅读
  • 稿源:天马行空

A.一定连续B.一定不连续C.不一定连续D.部分连续,部分不连续
链式存储设计时,各个不同结点的存储空间可以不连续,但是结点内的存储单元地址则必须连续。

typedef struct LNode {
 int value; // value中存放结点值域,默认是int型
 struct Lnode *next;//指向后继结点的指针
}LNode; // 定义单链表结点类型

上述定义了一个结构体,包括两部分,一是值域,二是指针域;每当定义一个结点都会产生这两个区域。如下图:

链式存储设计时,结点内的存储单元地址是?

这个value与next域必须是紧挨着的,称这个结点为内部。

假如我们定义若干个不同的结点,把它们链接起来成为一个单链表。

When a chained storage design is, what is the storage unit address within the node 02

这些结点蓝色部分,也就是value区域,箭头区域则是指针域指向逻辑上相链接的下一个结点,但是它们在空间上不一定连续。

When a chained storage design is, what is the storage unit address within the node 03

譬如,第一个结点的起始地址有可能是1号单元,第二个结点可能是10号单元,第三个结点有可能是100号单元,也就是它们的地址空间不一定非得连续的,但只要在逻辑上通过指针域互相链接起来就可以了。

When a chained storage design is, what is the storage unit address within the node 04

而对于它们的结点内部一定是连续的。若第一个结点占用两个地址,那么value域的起始地址是1,则指针域的地址就是2。同理若第二结点的value地址是10,则next域就是11。

因此,在进行链式存储设计时,各个不同结点完全可以存储在不连续的空间上,而对于同一个结点内部,不论划分多少个区域,两个也好,三个也罢,总之内部的单元存储地址是连续的。

喜欢 2

文章评论 (0)

表情

大眼 可爱 大笑 坏笑 害羞 发怒 折磨 快哭了 大哭 白眼 晕 流汗 困 腼腆 惊讶 憨笑 色 得意 骷髅 囧 睡觉 眨眼 亲亲 疑问 闭嘴 难过 淡定 抗议 鄙视 猪头