# PHP数据结构

## 什么是数据结构呢？

**数据：**&#x63CF;述客观事物的符号，如文本、图片、视频

**数据元素：**&#x7EC4;成数据的，有一定意义的基本单位

**数据项：**&#x4E00;个数据元素可以由若干数据项组成

**数据对象：**&#x6027;质相同的数据元素的集合

**数据结构：**&#x6570;据结构是计算机用来组织和存储数据的方式! 具体定义:数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成

## 数据结构术语图示

![](https://1303647163-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LfnT30woYyQ9bJF96Hh%2F-LfnTB5KYnkOx0V3e4EY%2F-LfnTJHFeCCWA-oXXpO0%2F%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E6%9C%AF%E8%AF%AD%E5%9B%BE%E7%A4%BA.png?generation=1558862981741713\&alt=media)

## 数据结构包含的内容

![](https://1303647163-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LfnT30woYyQ9bJF96Hh%2F-LfnTB5KYnkOx0V3e4EY%2F-LfnTJHHUASqMLMufBAw%2F%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%8C%85%E5%90%AB%E7%9A%84%E5%86%85%E5%AE%B9.png?generation=1558862981722245\&alt=media)

## 数据的逻辑结构

## ![](https://1303647163-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LfnT30woYyQ9bJF96Hh%2F-LfnTB5KYnkOx0V3e4EY%2F-LfnTJHJE_qZ_5fURytl%2F%E6%95%B0%E6%8D%AE%E7%9A%84%E9%80%BB%E8%BE%91%E7%BB%93%E6%9E%84.png?generation=1558862980025909\&alt=media)

## 数据的物理存储结构

**顺序存储结构**

顺序存储结构（Sequence Storage Structure）是指在一块连续的存储区域中一个接着一个地存放数据。顺序存储方式把逻辑上相邻的结点存储在物理位置相邻的存储单元中，节点间的逻辑关系由存储单元的邻接关系来体现。一般采用数组或结构数组来描述。线性存储方式主要用于线性逻辑结构的数据存放，而对于图和树等非线性逻辑结构则不适用。

**链式存储结构**

链式存储结构（Linked Storage Structure）比较灵活，其不要求逻辑上相邻的节点在物理位置上相邻，节点间的逻辑关系由附加的引用字段表示。一个结点的引用字段往往指向下一个节点的存放位置。

**索引存储结构**

索引存储结构是采用附加的索引表的方式来存储节点信息。索引表由若干索引项组成。索引存储结构中索引项的一般形式为：（关键字、地址）。其中，关键字是能够唯一标识一个节点的数据项。

**散列（或哈希）存储结构**

散列存储结构是根据节点的关键字直接计算出该节点的存储地址的一种存储方式。
