min三岁 2019-08-15 21:18 采纳率: 0%
浏览 3492

顺序表、链表和数组是逻辑结构还是物理(存储)结构?或者这两种结构都有描述?

数据结构中的线性结构也就是“线性表”是逻辑结构,现在可以肯定栈与队列都是存储结构,栈与队列都是线性表,顺序表和链表也是线性表,一维数组和顺序表又基本上是一回事,那么顺序表和链表也是存储结构吗?

主要是在网上看了很多人的回答,各种说法都有,所以想确认一下。

  • 写回答

4条回答

  • Big_Stronger 2021-12-26 18:58
    关注

    我来总结一下吧,很多人工作多年也没把“逻辑结构”和“物理存储结构”区分开搞明白,一堆糊涂蛋。

    首先数据结构分为两个层次:逻辑结构 和 物理结构(存储方式) 。

    • 逻辑结构是用来描述数据元素之间的逻辑关系,是一个抽象概念,与数据的实际存储无关,独立于计算机存在。
    • 物理结构是数据元素及其相互之间的关系在计算机存储器中的存储方式,简而言之物理结构就是实际的物理存储方式。
    • 总结:逻辑结构是数据结构的抽象,物理结构是数据结构的实现,两者综合起来才建立了数据元素完整的结构关系,
      只有逻辑结构,数据无法实际存储;只有物理结构,数据不知道该用哪种合适的方式存储。
      逻辑结构就好比是理论思想,物理结构就好比是对理论思想的具体实践,只有理论思想没有具体实践,思想永远只是空中楼阁没有实际的意义,
      而没有理论思想的指导,只知道埋头傻干,就好比是无头苍蝇乱撞。因此面对一个需求,首先要先分析他的逻辑结构,然后依据逻辑结构找到适合实现该逻辑结构(理论思想)的物理存储方式

    明确了逻辑结构和物理结构的定义,再来讲讲逻辑结构和物理结构的种类,其中逻辑结构有两种划分方式:
    按照第一种划分方式(划分依据是数据元素之间是否是一对一的关系),逻辑结构可以划分为两种:线性结构和非线性结构。

    • 线性结构:有且仅有一个开始节点和一个终端节点,并且除了头尾,每个数据元素都有一个直接前驱和直接后继,是1对1的关系。
      常见的线性结构有:线性表、栈、队列、串,注意:这四种都是逻辑结构,且各有特点,队列是队列,线性表是线性表,栈是栈,他们是平级的概念,你不能说队列和栈是线性表!!!!! 另外数组是物理结构中顺序存储结构的实现,跟上面这4个逻辑结构不是一码事。
    • 非线性结构:一个节点可能有多个直接前驱和后继,比如:树、图, 注意:树、图也是逻辑结构!!!
      第二种其实就是在第一种分类的基础上进一步细分,在此不做详细描述

    物理结构分为四种:

    • 顺接存储结构
    • 链式存储结构
    • 索引存储结构
    • 散列存储结构
      在此只讲一下容易产生歧义的第一种
      顺序存储结构:用一组连续的存储单元依次存储数据元素,C语言中用数组实现顺序存储结构,超级注意!!顺序存储结构不等于线性表,因为线性表是逻辑结构,而顺序存储结构是物理结构,二者根本不在一个层次,因此不能放在一起比较
      而且顺序存储结构不仅能实现队线性表、队列、栈(线性结构),还能实现树和图(非线性结构),即数组能实现的逻辑结构不止一种,线性和非线性的逻辑结构都可以通过数组实现!!

    顺序表是比较特殊的一种,它即描述了逻辑结构也描述了存储结构,用数组实现线性表就是顺序表

    评论

报告相同问题?

悬赏问题

  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀