数据结构

对于一般的数据结构,包含逻辑结构和存储结构两部分。逻辑结构说明了数据间的逻辑关系,将逻辑结构存储到计算机的存储器中,则构成了存储结构。

对于初学者我们都只讨论只有一种逻辑结构的数据,即数据之间只有一种关系。

对于包含了多种关系的数据结构,可以首先对每个关系 的情况分别进行讨论,然后再整体讨论。

 

数据结构中的逻辑结构中包含了四种基本的结构,即  集合结构,线性结构,树形结构,图型结构。   可以由它们互相组合形成更复杂的结构。

 

这里我们假设B为一种数据结构,K代表集合中的元素,R代表集合中的关系,有:

集合结构:无逻辑结构,数据之间相互独立。集合框架就是用来处理一组互相之间没有逻辑关系的数据的。(错误,纠正在后面)

     K= {01,02,03,04,05,06,07}

     R= {}

线性结构:每个数据元素有且仅有一个直接前驱元素,有且仅有一个直接后继元素(除去两头的两个端点)。链表就是一个很好的线性结构的实例。

    K= {01,02,03,04,05,06,07}

  R = {<02,03>,<03,07>,<07,04>,<04,06>,<06,01>,<01,05>}

    最后得出的关系图如下:

    02→03→07→04→06→01→05  即像一条线的结构

树形结构:树形结构画出来的形状像一颗倒着的树,最上面有一个根结点,没有前驱,只有后继结点。最下面一层的只有前驱结点没有后继。其余的结点都只有一个前驱结点,但可以有一个或多个后继结点。

     K= {01,02,03,04,05,06,07}

   R= {<01,02>,<01,03>,<02,04>,<02,05>,<03,06>,<03,07>}

   (图好难画哦,不画了)

图型结构:结点之间是多对多的联系,通常也把它叫做网状关系。每个结点可以有任意多个前驱结点和任意多个后继结点

     K= {01,02,03,04,05,06,07}

   R= {<01,02>,<02,01>,<02,04>,<04,02>,<03,04>,<04,03>,<05,06>,<06,05>,<07,02>,<02,07>}

可以看出,以02作为前驱结点的关系有3个,并且他的后继结点也可以作为它的前驱结点。即两个数据之间的关系可以是双向的。这跟前面三种结构不一样。

 

 

带有两个关系的数据结构:

    K= {01,02,03,04,05,06}

    R= {R1,R2}

    R1 = {<03,02>,<03,05>,<02,01>,<05,04>,<05,06>}

  R2 = {<01,02>,<02,03>,<03,04>,<04,05>,<05,06>}

 

    仔细看的话就能发现,R1代表的是树形结构,R2代表线性结构。这时候通常把它作为多个数据结构来树立。

 

我们在java中看到的集合框架并不是集合结构,如集合也包括链表结构,set接口实例中的元素按特定规则形成了线性结构,但是集合结构中,所有数据都是散列的。

posted @   生姜不爱蒜  阅读(188)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!
点击右上角即可分享
微信分享提示