王道数据结构代码:顺序表实现动态内存分配
主要实现顺序表内存满之后再次申请内存的操作
#include<bits/stdc++.h> using namespace std; #define InitSize 10 typedef struct { int *data; int lenght; int MaxSize ; }SeqList; void InitList(SeqList &L){ L.data = (int *)malloc(sizeof(int)*InitSize); L.lenght = 0; L.MaxSize = InitSize; } void IncreaseList(SeqList &L , int len){ int *p = L.data; L.data = (int *)malloc(sizeof(int)*(L.MaxSize+len)); for(int i = 0 ; i < L.lenght ; i++){ L.data[i] = p[i]; } L.MaxSize = L.MaxSize + len; free(p); } int main(){ SeqList L; InitList(L); // 初始化顺序表 for(int i = 0 ; i < L.MaxSize ; i++) L.data[i] = i; // 录入数据 L.lenght = L.MaxSize; /// 录入数据结束记得修改顺序表的长度 for(int i = 0 ; i < L.lenght ; i++) printf("%d ",L.data[i]); printf("\n"); IncreaseList(L,10);/// 增加10个长度 for(int i = L.lenght ; i < L.MaxSize ; i++) L.data[i] = i; // 二次录入数据 L.lenght = L.MaxSize; for(int i = 0 ; i < L.lenght ; i++) printf("%d ",L.data[i]); return 0; }
重新申请内存是可以用realloc函数