线性表
概念:线性表是数据结构的一种,线性表中的元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素以外,其他数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点)。且分为一般线性表和受限线性表。
存储结构:
(1)顺序存储(顺序表):线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素,使得线性表在逻辑结构上相邻的元素存储在连续的物理存储结构中,即:通过数据元素物理存储的连续性来反应元素之间逻辑上的相邻关系。采用顺序存储结构存储的线性表通常称为顺序表。定义如下:
#define ListSize 100 //线性表的最大长度
typedef int DataType;
typedef struct
{
DataType data[ListSize]; //用数组存储线性表中的元素
DataType length; //顺序表中元素的个数
}SeqList, *PSeqList;
剩下还有一些操作函数,所以其底层的存储结构是数组
(2) 链式存储(单链表):
1、我们把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。
2、指针域中存储的信息称为指针或链,这两部分信息组成数据元素称为存储映像,称为结点(Node).
3、n个结点链接成一个链表,即为线性表(a1,a2,a3,a4,a5)的链式存储结构。
4、因为此链表的每个结点中只包含一个指针域,所以叫做单链表。
综上可得:线性表是逻辑数据结构,顺序表(数组)和单链表是底层存储数据结构,再加上一些添加删除等的操作一起作为逻辑数据结构的实现。
参考文章
https://blog.csdn.net/yiquanlaoshi/article/details/101065171
https://blog.csdn.net/liubo_01/article/details/80186552/