王道数据结构代码:顺序表实现动态内存分配

主要实现顺序表内存满之后再次申请内存的操作

#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函数

posted @ 2021-04-05 22:21  .李宁宁  阅读(283)  评论(0编辑  收藏  举报