#include#include #define initsize 10 typedef struct { int* data; int length; int maxsize; }seqlist; void initlist(seqlist& l) { //1.分配一个连续的空间 l.data = (int*)malloc(initsize * sizeof(int)); //2.将顺序表长度设为0 l.length = 0; //3.将顺序表最长设为initsize l.maxsize = initsize; } //插入操作 bool insertlist(seqlist &l,int i,int e) { if (i<1 || i>l.length + 1) return false; if (l.length >= initsize) { 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; } //增加长度 void increaselist(seqlist &l,int len) { //1.将l.data赋值给指针p int* p = l.data; //2.重新申请一个更长的连续空间 l.data = (int*)malloc((initsize + len) * sizeof(int)); //3.将原来的数据复制到新的空间中 for (int i = 0; i < l.length; i++) { l.data[i] = p[i]; } //4.将顺序表长度扩大 l.maxsize = l.maxsize + len; //5.释放p free(p); } int main() { //1.声明一个动态分配的顺序表 seqlist l; //2.初始化 initlist(l); //3.赋值 for (int i = 0; i < l.maxsize-4; i++) { l.data[i] = 1 + i; l.length++; } //4.打印查看 for (int i = 0; i < l.length; i++) { printf("L.data[%d]=%dn",i, l.data[i]); } //5.插入操作 do { insertlist(l, 3, 5555); } while (insertlist(l, 3, 5555)); //6.插入,查看 for (int i = 0; i < l.length; i++) { printf("插入后L.data[%d]=%dn", i, l.data[i]); } //7.增加长度 increaselist(l, 6); //8.查看添加长度后的顺序表 for (int i = 0; i < l.maxsize; i++) { printf("增长后L.data[%d]=%dn", i, l.data[i]); } return 0; }



