栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

顺序表的动态分配

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

顺序表的动态分配

顺序表的动态分配 一、注意事项

C++才有引用&
C是*

二、代码

#include
#include
#define InitSize 10//默认的最大长度
typedef struct {
int* data; //指示动态分配数组的指针
int MaxSize;
int length;
}SqList;

void InitList(SqList* L)
{
// for (int i = 0;i < InitSize;i++)
//L->data[i] = 0;
L->data = (int*)malloc(InitSize * sizeof(int));
L->length = 0;
L->MaxSize = InitSize;
for (int i = 0;i < InitSize;i++)
L->data[i] = 0;
}

void IncreaseList(SqList* L, int len)
{
int* p = L->data;
L->data = (int*)malloc((L->MaxSize + len) * sizeof(int));

L->MaxSize = L->MaxSize + len;
for (int i = 0;i < L->MaxSize;i++)
{
	L->data[i] = p[i];
	if (i >= InitSize && i < L->MaxSize)
		L->data[i] = 0;
}


free(p);

}

int main()
{

SqList L;
InitList(&L);
IncreaseList(&L, 5);
for (int i = 0;i < 15;i++)
{
	printf("data[%d]=%dn", i, L.data[i]);
}
return 0;

}

三、结果如图

四、总结

顺序表的动态分配过程:顺序表先定义和初始化,初始化时申请一片连续的存储空间,指针A指向空间的首地址。增加顺序表容量时,在另一片空间内继续申请新的连续存储空间,指针B指向该地址的首地址,将第一片空间的内容复制到新申请的区域,释放第一片空间。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991153.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号