不知道为什么... ...?

lfxzm 2003-12-18 02:17:47
几乎每本数据结构的书多这么写:
顺序存储结构定义是:逻辑相邻的数据元素在存储器中也相邻存储.
我很是不解!
例如:一个树.
A
/ \
/ \
B C
A与B,A与C 逻辑相邻,而在计算机中存储为:

*************
| A | B | C |
*************
A与B相邻,可A与C不相邻那!!
为撒子???
...全文
56 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sakurar 2003-12-18
  • 打赏
  • 举报
回复
所谓顺序,是指宏观上,树的结构是顺序的。
因为内存是线性的,不可能保证你树上每个结点相互都是物理上相邻。
lfxzm 2003-12-18
  • 打赏
  • 举报
回复
谢谢各位大哥的指点!

可能顺序存储结构只是开辟一片联系的空间来存储数据!
而并非一定要逻辑相邻的每个数也在存储器中相邻,一个数
也许会和多个数逻辑相邻,就象树一样!!
lfxzm 2003-12-18
  • 打赏
  • 举报
回复
我知道逻辑相邻上相邻不等于物理上一定要相邻
可顺序存储结构定义是:逻辑相邻的数据元素在存储器中也相邻存储.
可树为什么逻辑相邻,在存储器中不相邻
hanyixin 2003-12-18
  • 打赏
  • 举报
回复

你画的这个就是数据结构中的堆了,节点逻辑相邻,你可以从一个顶点立即找到它的父亲或孩子,也不需要物理上相邻嘛。

ymcymc 2003-12-18
  • 打赏
  • 举报
回复
“顺序存储的定义是:逻辑相邻邦的元素在存储器中也相邻存储”
我认为这里的顺序存储是指数组之类的,二叉树是一种链式存储结构
链式存储结构之所以不能随机访问就是因为,就是因为各元素的存储在
存储器中不是相邻的。
如用数组存储a[]=[1,2,3},可以用a+1访问2,a+2访问3,若用链式存储结构存
储1->2->3就算知道1的存储地址你也不能用a+1访问2,a+2访问3,
树是是链式存储的在内存中可能不是a|b|c这样连续的,而是通过指针标识下一个元素

(个人意见)
layman2008 2003-12-18
  • 打赏
  • 举报
回复
逻辑相邻上相邻不等于物理上一定要相邻

想想链表吧,a与b逻辑相邻,但是物理上呢?a指向b的地址,但是可能隔了很远
njuhuangmy 2003-12-18
  • 打赏
  • 举报
回复
我们不妨设 c 还有两个 “儿子” D和E

那么 怎么放??

C要和A,D,E邻接, 可C最多只能对应两头阿

我们看一个结构数组, A[3] , 说不定A的每个元素都被对齐

这样就是 A[0]+几个字节+ A[1] + 几个字节 + A[2] + 几个字节

这个, 你也可以认为不相邻,也可以认为相邻啊!!

呵呵, 理解的时候,是要你顺着别人的思路理解:)

你把树里的BC看作一体:)
sakurar 2003-12-18
  • 打赏
  • 举报
回复
注意,说得是逻辑相邻

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧