物理结构和逻辑结构更通俗解释

什么是数据存储的物理结构呢?

如果把数据结构比作活生生的人,那么物理结构就是人的血肉和骨骼,看得见,摸得
着,实实在在。例如我们刚刚学过的数组和链表,都是内存中实实在在的存储结构。

而在物质的人体之上,还存在着人的思想和精神,它们看不见、摸不着。看过电影
《阿凡达》 吗?男主角的思想意识从一个瘦弱残疾的人类身上被移植到一个高大威猛的
蓝皮肤外星人身上,虽然承载思想意识的肉身改变了,但是人格却是唯一的。

如果把物质层面的人体比作数据存储的物理结构,那么精神层面的人格则是数据存储
的逻辑结构。逻辑结构是抽象的概念,它依赖于物理结构而存在。

下面我们来讲解两个常用数据结构:栈和队列。这两者都属于逻辑结构,它们的物理
实现既可以利用数组,也可以利用链表来完成。

在后面的章节中,我们会学习到二叉树,这也是一种逻辑结构。同样地,二叉树也可
以依托于物理上的数组或链表来实现。


网上很多文章介绍线性和非线性的时候,都只是给你举例说哪些是线性结构 ,哪些是非线性结构,类似下图这种:
摘自知乎:...

我觉得这里的解释就不严谨,元素之间存在一对一的线性关系,那双向链表类,我可以对应前驱结点还有后继结点,我觉得应该加上一句限制条件,
想起来一首歌词好像,向前向后向上向下向左向右哈哈,单方向是一对一的关系就可以。这时候可能会说了,那树类,比如二叉树,如下图所示:
我这里将1,3叶子节点都看作是2的下方向的对应关系,就是1对2,所以树不是线性关系,个人理解哈,欢迎大家交流学习一起进步嘻嘻。

前面部分内容摘抄自书籍小灰的算法之旅

posted @   皮卡丘和羊宝贝😄  阅读(156)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示