数据结构考研:线性表,顺序表,有序表,链表,数组的概念的区别与联系(软件工程/计算机/王道论坛)

一、问题背景

不管是计算机专业的考研初试还是工作面试,数据结构都是很重要的课程。而博主最近看的王道论坛2020的数据结构开篇就有按照逻辑结构和存储结构将各种数据结构进行分类,本文就结合所有知识点充分讲解各个数据结构之间的区别与联系。

二、相似概念的线性表区分

在数据结构考试题目中我们总是要区分这三个概念:线性表顺序表有序表链表,甚至还有线性表的其他概念。
下图便是博主在结合王道论坛数据结构书本上以及网络上的相关线性表的概念做出的思维导图。
在这里插入图片描述

1.线性表

线性表是具有相同特性的数据元素的一个有限序列。线性表属于逻辑结构中的线性结构,它包括顺序表、链表、栈、队列等。

2.顺序表

顺序表是顺序存储结构的线性表,是把线性表中的所有元素按照其逻辑顺序依次存储到计算机存储器中指定位置开始的一块连续的物理地址的空间中。由于顺序表的逻辑地址与其物理地址皆相邻,故称为顺序表。
编程语言中的数组就是顺序表的一个典型实例。

3.链表

链表是链式存储结构的线性表,是用任意一组物理地址来存储数据元素,而数据元素之间的逻辑关系通过指针来表示。所以它的存储结构可以是连续的,也可以不是连续的。
一般我们说的链表都是不连续的。有一种用数组来表示的特殊链表,叫做静态链表,它的存储结构就是连续的。

4.有序表

我们很容易把有序表与顺序表链表相提并论,其实这是错误的。因为顺序表链表是根据线性表的存储结构(顺序或链式)来划分概念的,而有序表是根据线性表的数据元素的数值大小来划分概念,故有序表顺序表链表不是相互独立的,而是内容互相交错的。

有序表是指表中所有数据元素的数值以递增或递减方式有序排列,是数据元素的数值的有序性。
有序表只描述元素之间的逻辑关系,故为逻辑结构,因此有序表既可以顺序存储也可以链式存储。

例如,数组int array[3]=[1,2,3];是顺序存储结构的有序表。因为是数组,所以是顺序存储结构;因为数据元素[1,2,3]是从小到大排列,故是有序表。而单链表1->2->3则是链式存储结构的有序表。由这个例子可见:有序表顺序表链表不是相互独立的,而是内容互相交错的,我们不能把他们相提并论。

三、逻辑结构与存储结构的区分

在数据结构的考研真题和计算机笔试中,总有区分逻辑结构与存储结构的题目。
下图是博主总结的数据结构的三要素:逻辑结构、存储结构(物理结构)、数据运算的思维导图。
在这里插入图片描述

先说结论:线性表、有序表是逻辑结构;顺序表,链表是存储结构。

逻辑结构与存储结构的判定方法:当一个结构(如数组、链表、树、图),在逻辑结构中只有一种定义,而在物理结构中却有两种或多种定义,那么这个结构就属于逻辑结构;相反,当此结构在原有基础上加上了某种限定词(如二叉树->线索二叉树),使得其在物理结构中只有一种定义,那么这个结构就属于物理(存储)结构,或称为数据结构;

举例1:栈属于什么结构?
分析:栈在逻辑结构中只能属于线性结构,而在物理结构中它可以使用顺序存储(数组),也可以使用链式存储(链表),所以说栈是一种逻辑结构。

举例2:线索二叉树属于什么结构?
分析:首先因为二叉树既可以顺序存储又可链式存储,故可以得到二叉树是一种逻辑结构。但是线索二叉树是二叉树加上限定词线索后的链表结构(不能用顺序存储),也就是说,线索二叉树在计算机内部的只有一种存储结构,所以线索二叉树是物理结构。

逻辑结构和存储结构的区别点在于:数据的逻辑结构是独立于在计算机中的存储结构的,数据的存储方式有多种不同的选择。例如栈是一种逻辑结构,它可以用顺序存储也可以用链式存储。

而数据结构是既可以描述逻辑结构又可以描述存储结构和数据运算,必须包含以上三种元素。所以像顺序表、哈希表、单链表都是数据结构。


本文参考文献:
[1]线性表,顺序表,链表,数组的区别与联系
[2]数据结构知识整理4线性表——顺序表、链表、有序表
[3]有序表
[4]如何判断某种结构是逻辑结构还是存储结构或数据结构?

发布了120 篇原创文章 · 获赞 141 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/wq6ylg08/article/details/103426582
今日推荐