在开发过程中,时刻都在和各式各样的数据打交道,在处理数据的过程中,我们经常从两方面进行考虑:
- 数据之间的关系是什么
- 数据怎么存储
而数据结构,就是使用计算机来存储、组合数据的方式。数据结构在软件开发中无处不在,从底层的操作系统到编译器的语法和词法分析,再到函数调用,再到上层的应用开发,都要和数据结构打交道,数据结构贯穿了整个软件开发的始终。
讨论数据结构的两个维度
前面说到,我们在处理数据的过程中,需要从数据之间的关系和数据的存储方式上进行考虑。当我们从数据之间的关系进行考虑时,我们是在讨论数据的逻辑结构,当我们从数据的存储方式上进行考虑时,我们是在讨论数据的存储结构。这就是讨论数据结构的两个维度。
从这两个维度上考虑,在开发时逻辑会更加清楚一些。良好的数据结构,会在加快开发效率的同时,也提高程序的运行效率。
数据结构的分类
从逻辑结构上进行分类,我们可以把数据结构分为以下三种结构:
- 集合
- 线性结构
- 非线性结构
从存储结构上进行分类,我们可以把数据结构分为以下四个结构:
- 顺序存储结构
- 链式存储结构
- 索引存储结构
- 散列存储结构
每个分类还可以继续进行划分,比如线性结构可以再分为栈、队列、串等,链式存储结构可以再分为单向链表、双向链表、循环链表等。它们之间的关系如下图所示:
后续的文章中,会依次介绍这些数据结构。
完。