顺序表实现动态分配

复制代码
#include <stdlib.h>
#define InitSize 10  //默认最大长度
typedef struct{
 int *data; //顺序表的起始地址
 int maxsize;//最大容量      
 int length;//当前长度
}SeqList;
//初始化顺序表
void InitList(SeqList &L)
{
 L.data=(int*)malloc(InitSize*sizeof(int))//动态申请内存空间
 L.length=0;//初始长度为0
 L.maxsize=10;
//赋初始值
 forint i=0;i<L.maxsize;i++)
 {
 L.data[i]=i;
 }
}
//增加动态数组的长度
void IncreaseSize(SeqList &L,int len)
{
 int *p=L.data;
 L.data=(int *)malloc(sizeof(int)*(L.maxsize+len));
 for(int i=0;i<L.length;i++)
 {
    L.data[i]=p[i];
 }
 L.maxsize=L.maxsize+len;
 free(p);//销毁内存空间
}
int main()
{
 SeqList L;
 InitList(L);
 IncreaseSize(L,5);
 return 0;
}
复制代码

 

 malloc()申请空间除了申请指定内存空间外,还在指针头部以前增加存放额外空间用于存放申请空间大小信息

 free()销毁内存传入malloc申请空间的首地址,除传入malloc申请的空间外,还额外传入指针头部以前的值用于辨别需要销毁空间的大小,该指针头也被销毁。

posted @   ly2553  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示