线性表(Linear List)- 定义 & 基本操作
一、顺序表(Sequential List)
1. 定义
1.1 静态分配
#define MaxSize 10
typedef struct {
int data[MaxSize];
int length;
} SqList;
1.2 动态分配
#define InitSize 10
typedef struct {
int *data;
int MaxSize;
int length;
} SeqList;
2. 基本操作
2.1 初始化
- 静态分配
void InitList(SqList &L) {
for (int i = 0; i < MaxSize; i++) {
L.data[i] = 0;
}
L.length = 0;
}
- 动态分配
void InitList(SeqList &L) {
L.data = (int *)malloc(InitSize * sizeof(int));
L.length = 0;
L.MaxSize = InitSize;
}
void IncreaseSize(SeqList &L, int len) {
int *p = L.data;
L.data = (int *)malloc((L.MaxSize + len) * sizeof(int));
for (int i = 0; i < L.length; i++) {
L.data[i] = p[i];
}
L.MaxSize = L.MaxSize + len;
free(p);
}
2.2 插入
bool ListInsert(SqList &L, int i, int e) {
if (i < 1 || i > L.length + 1) {
return false;
}
if (L.length >= MaxSize) {
return false;
}
for (int j = L.length; j >= i; j--) {
L.data[j] = L.data[j - 1];
}
L.data[i - 1] = e;
L.length++;
return true;
}
2.3 删除
bool ListDelete(SqList &L, int i, int &e) {
if (i < 1 || i > L.length) {
return false;
<