zoukankan      html  css  js  c++  java
  • 数据结构

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

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

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

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

    这里我们假设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接口实例中的元素按特定规则形成了线性结构,但是集合结构中,所有数据都是散列的。

  • 相关阅读:
    BUG处理流程图
    开发认为不是bug,你该如何处理?
    读书笔记:平台革命
    我的工具:开发自己的代码生成工具
    我的工具:Db SQL Monitor
    我的工具:Ping工具
    windows配置nginx实现负载均衡集群 -请求分流
    Oracle完全卸载详解
    Wireshark过滤语句中常用的操作符
    TCP 传输控制协议(转)
  • 原文地址:https://www.cnblogs.com/sjbas/p/5452677.html
Copyright © 2011-2022 走看看