引言:数据结构线性表

顺序表静态分配

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//顺序表的实现,静态分配
typedef struct
{
int length;
int data[maxsize];
}sqList;
//静态分配实现顺序表初始化
void Initlist(sqList &L)
{
for (int i = 0; i < maxsize; i++)
{
L.data[i] = 0;
}
L.length = 0;
}

动态分配

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//顺序表的实现,动态分配
typedef struct node
{
int* data;
int MaxSize;
int length;
}seqList;
//动态分配初始化顺序表
void InitList(seqList &L)
{
L.data = (int*)malloc(InitSize * sizeof(int));
L.length = 0;
L.MaxSize = InitSize;
}
//动态分配增加顺序表长度
bool IncreaseSize(seqList& L, int len)
{
int* p = L.data;
L.data = (int*)malloc(sizeof(int) * (L.MaxSize + len));
for (int i = 0; i < L.MaxSize + len; i++)
{
L.data[i] = p[i];
}
L.MaxSize = L.MaxSize + len;
free(p);
return true;
}

这里动态分配增加长度是malloc重新申请一片更大的空间,而不是插在之前的顺序表后

顺序表的插入删除