1 线性表的定义
线性表是相同数据类型的n(n>=0)个数据元素的有限 序列。若用L命名线性表,则其一般表示为:
L
=
[
a
(
0
)
,
a
(
1
)
,
.
.
.
,
a
(
n
)
]
L=[a(0),a(1), ...,a(n)]
L=[a(0),a(1),...,a(n)]
在在这里要注意:
- 数据类型要相同;
- 数据元素的数量是有限的;
- 数据元素之间是存在次序关系的;
- 数据元素的类型都相同,这说明每个元素占有相同大小的存储空间。
线性表的基本操作
常用操作:
- InitList(&L):构造一个空的线性表L,分配内存空间;
- DestroyList(&L):销毁线性表。释放线性表L所占用的内存;
- ListInsert(&L, i, e):在线性表L的i位置插入数据e;
- ListDelete(L, i, &e):删除线性表L的i位置的数据并用e返回删除元素值;
- LocateElement(L, e):查找线性表L中值为e的元素的位置;
- GetElement(&L, i):获取列表L中第i个元素的值。
其他操作:
- Length(L):返回线性表中元素的个数;
- PringList(L):按照线性表的顺序打印线型表L的值;
- Empty(L):若L为空,返回true,否则返回false。
注意:给L带上&的函数(方法)一般是要对线性表L的数据进行改变的函数(方法),否则不带&。
2 顺序表
2.0 定义
用顺序存储的方式实现的线性表。
* 顺序存储:逻辑上相邻<-->物理存储上相邻。
数据结构的定义:
#define MAX_SIZE 10 // 定义顺序表的最大长度
typedef struct {
ElementType data[MAX_SIZE]; // 用静态数组存放数据
int length; // 顺序表当前的长度
} OrderList;
2.2 创建顺序表
#define MAX_SIZE 10 // 定义顺序表的最大长度
typedef struct {
ElementType data[MAX_SIZE]; // 用静态数组存放数据
int length; // 顺序表当前的长度
} OrderList;
void InitList(OrderList &L) {
for(int i = 0;i < MAX_SIZE; i++) {
L.data[i] = 0; // 初始化默认值
}
L.length = 0;
}
未完待续...