线性表
引言
继续复习数据结构,今天复习最为基础的线性表部分。
正文
- 线性表及其逻辑结构
- 线性表的顺序存储结构
- 线性表的逻辑存储结构
- 线性表的应用
2.1 线性表及其逻辑结构
首先来介绍什么是线性表
线性表是 n (≥0) 个数据元素的有限序列,记作
(a1, a2, …, an)
ai 是表中数据元素,n 是表长度。
线性表的特点
线性表是客观事物的抽象
是我们对现实事物的抽象表达
Eg:
接下来介绍其抽象数据类型
基于其抽象数据类型的基本运算
-
初始化线性表InitList(&L):构造一个空的线性表L。
-
销毁线性表DestroyList(&L):释放线性表L占用的内存空间。
-
判线性表是否为空表ListEmpty(L):若L为空表,则返回真, 否则返回假。
-
求线性表的长度ListLength(L):返回L中元素个数n。
-
输出线性表DispList(L):线性表L不为空时,顺序显示L中各结点的值域。
-
求线性表L中指定位置的某个数据元素GetElem(L,i,&e):用e返回L中第 i(1≤i≤n)个元素的值。
-
定位查找LocateElem(L,e):返回L中第一个值域与e相等的逻辑位序。若这样的元素不存在,则返回值为0。
-
插入一个数据元素ListInsert(&L,i,e):在L的第i(1≤i≤n)个元素之前插入新的元素e,L的长度增1。
-
删除数据元素ListDelete(&L,i,&e):删除L的第i(1≤i≤n)个元素,并用e返回其值,L的长度减1。
这9个基本运算,对于使用不同存储结构的线性表其过程不同,在后面会一一介绍
或许你会好奇这线性表有什么用
在这里 我要先说 线性表十分重要
- 程序员可以直接使用它来存放数据——作为存放数据的容器。
- 程序员可以直接使用它的基本运算——完成更复杂的功能
随着学习越来越深入,你一定会觉得线性表是十分重要的
最后介绍一下线性表的知识结构
2.2 线性表的顺序存储结构
从现在开始,就要了解真正的数据结构了
先是比较简单线性表的顺序存储结构——线性表
- 线性表是按逻辑顺序依次存储到存储器中一片连续的存储空间中的数据结构
用计算机C语言表示就是数组
只是这个数组有些不一样
它是这样定义的
typedef struct
{
char data[MaxSize];
int length;
}SqList;
其中data成员存放元素
length成员存放线性表的实际长度。
要注意:其逻辑位序与物理位序差1
这个是数组的基本知识了 但还是要提醒一下
**接下来就是重点了
用C语言实现上面提到的基本运算
1、建立顺序表
void CreateList(SqList *&L, char a[], int n)
//顺序建立顺序表</