数据结构学习记录,顺序表的实现——动态分配 c语言 大佬勿喷,用作记录学习

#include<stdio.h>
#include<stdlib.h>//包含malloc函数和free函数的头文件
#define insize 10//初始长度
#define addsize 5 //增加长度基本单位

typedef struct
{
    int *data;  //动态分配数组的指针
    int maxsize;//顺序表的最大容量
    int length;//顺序表的当前长度
}sqlist;

int inlist(sqlist &L)//用malloc函数申请连续的空间
{
    L.data = (int *)malloc((insize * sizeof(int)));  //使用malloc函数
    L.length = 0;
    L.maxsize = insize;
}

int addlist(sqlist &L, int len)     //增加动态数组的长度,len为需要增加的元素个数
{
    int *p = L.data;
    L.data = (int*)malloc((addsize + len) * sizeof(int));  //使用malloc函数增加原始的数组长度,addsize为单位增加量
    for (int i = 0; i < L.length; i++)   //将数据复制到新的区域
    {
        L.data[i] = p[i];
    }
    L.maxsize = L.maxsize + len;           //顺序表的最大长度length+len个元素
    free(p);                    //使用free函数施放原来的内存空间,因为p是指向原来内存地址的指针
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值