数据结构
什么是数据结构
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
数据结构定义
数据(data)
是描述客观事物的数和字符的集合,通常以数据元素作为数据的基本单位
数据项(data item)
具有独立含义的数据最小单位,也叫字段或域
数据对象(data Object)
指性质相同的数据元素的集合,是数据的一个子集
数据结构(data structure)
指所有数据元素以及数据元素之间的关系,可以看做为相互之间存在某种联系的数据元素集合
数据逻辑结构
指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后间关系,而与他们在计算机中的存储位置无关。逻辑结构包括:
1.集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;
2.线性结构:数据结构中的元素存在一对一的相互关系;
3.树形结构:数据结构中的元素存在一对多的相互关系;
4.图形结构:数据结构中的元素存在多对多的相互关系。
逻辑结构表示方法
- 图表表示
- 二元组表示
数据存储结构
数据的逻辑结构在计算机存储空间中的存放形式称为数据的物理结构(也称为存储结构)。一般来说,一种数据结构的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序存储、链式存储、索引存储和哈希存储等。
数据的顺序存储结构的特点是:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系;非顺序存储的特点是:借助指示元素存储地址的指针表示数据元素之间的逻辑关系。
顺序存储结构
采用一组连续的存储单元存放所有的数据元素
优点:
- 存储效率高:分配给数据的存储单元都用于存放数据元素,元素间的逻辑关系没有占用额外的内存空间
- 可以实现随机存取:每一个元素对应一个逻辑序号,由序号可以直接获取对应元素的存储地址
缺点:
- 修改数据不方便,进行插入与删除操作时需要移动一系列的元素
链式存储结构
每个逻辑元素用一个内存节点存储,每一个节点是单独分配的,所有的节点地址不一定连续
优点:
- 便于数据修改,操作元素时只需要修改相对应节点的指针域
缺点:
- 空间利用效率低,因为分配的内存有一部分用来存储节点之间的逻辑关系
- 由于存储空间不连续,所以不能对元素进行随机存储
以上是主要使用的存储结构,还有两种不常用的存储结构:
- 索引存储结构
- 哈希/散列存储结构
由于不常使用,我这里就不过多进行描述
数据物理结构
数据的物理结构是数据结构在计算机中的表示(又称映像),它包括数据元素的机内表示和关系的机内表示。由于具体实现的方法有顺序、链接、索引、散列等多种,所以,一种数据结构可表示成一种或多种存储结构。
数据元素的机内表示(映像方法): 用二进制位(bit)的位串表示数据元素。通常称这种位串为节点(node)。当数据元素有若干个数据项组成时,位串中与各个数据项对应的子位串称为数据域(data field)。因此,节点是数据元素的机内表示(或机内映像)。
关系的机内表示(映像方法):数据元素之间的关系的机内表示可以分为顺序映像和非顺序映像,常用两种存储结构:顺序存储结构和链式存储结构。顺序映像借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。非顺序映像借助指示元素存储位置的指针(pointer)来表示数据元素之间的逻辑关系。
本栏作用
本栏主要是将我对数据结构的各种逻辑结构的理解与代码实现,代码实现包括顺序实现、链式实现
大致的顺序为:
- 什么是线性表?
- 顺序表结构
- 链式表结构(单链表、双链表)
- 栈的详解
- 顺序栈
- 链表栈
- 栈的应用
- 后缀表达式
- 符号匹配
- 解迷宫
- 队列的详解
- 普通队列
- 顺序队列
- 链表队列
- 循环队列
- 队列的应用
- 普通队列
- 串的详解
- 顺序串
- 链表栈
- 树的详解
- 树的储存结构
- 二叉树
- 图的详解