引言:数据结构线性表
顺序表静态分配
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重新申请一片更大的空间,而不是插在之前的顺序表后
顺序表的插入删除