数组和顺序表的区别

前言

看到很多人直接将顺序表等同于数组,认为顺序表就是数组,但这样做容易造成概念混淆。

下面就对这两个概念进行解释,帮助大家进行区分。

数组和顺序表的区别_第1张图片

什么是顺序表

在解释什么是顺序表之前,我们还需要了解一点基础知识。

数据结构

数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。

线性表

线性表(linear list)是数据结构的一种,一个线性表是 n 个具有相同特性的数据元素的有限序列。

线性表在逻辑上是线性结构,也就说是连续的一条直线,但是在物理结构上并不一定是连续的。

常见的线性表:顺序表、链表、栈、队列、字符串

顺序表

顺序表,全名顺序存储结构,是线性表的一种。

顺序表不仅要求数据在逻辑上是连续的一条直线,还要求用一段物理地址连续的存储单元以次存储表中数据元素,一般情况下采用数组存储。

什么是数组

数组是相同数据类型的元素按一定顺序排列的的集合。数组中的元素存储在一个连续性的内存块中,并通过索引来访问。

简单的说,数组是在物理空间中连续存储的相同数据类型的元素的集合。

可见,数组是一种顺序表,但不能说顺序表是数组。就像小学生是学生,那所有的学生都是小学生吗?

总结

  1. 数组是数据结构中顺序存储的物理结构,而顺序表是数据结构中的逻辑结构

    逻辑结构:对操作对象的数学描述,描述的是数据元素之间的逻辑关系。

    例如,线性结构,树形结构,图形结构。它们都属于逻辑结构。

    物理结构:又称存储结构,数据的逻辑结构在计算机内存中的存储方式称为数据的物理结构(又称映射)。

    数组和顺序表的区别_第2张图片

    实际上,同一种逻辑结构可以有多种存储结构,在不同的存储结构中,实现同一种运算的算法可能不同。
    逻辑结构、存储结构和运算三者之间的关系:

    数组和顺序表的区别_第3张图片

    将逻辑结构映射为存储结构时,需要存储逻辑结构中的:

    • 所有元素
    • 元素之间的关系

    此用引用链接:逻辑结构与物理结构

  2. 我们可以用数组实现顺序表,但我们同样可以用数组实现二叉树、队列等结构,因此不能直接认为顺序表就是数组

你可能感兴趣的:(C语言,数据结构,c语言,c++)