数据结构线性表顺序表中的动态分配案例

本文详细介绍了在Visual Studio 2013环境中如何使用动态数组`SqList`进行初始化,包括两种不同的初始化方法:一种是全0填充,另一种是通过`malloc`动态申请内存。此外,还讲解了如何根据需要增加数组长度、创建列表和打印操作。
摘要由CSDN通过智能技术生成

运行环境 vs2013

定义数组int a[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2 };

起始长度为10 是不够的 结和malloc函数 进行申请和储存

初始化定义了两个 初始化1让表中全为0 初始化2则是malloc申请空间

主要代码有注释

博主是菜鸟 很多代码可以优化 有疑问可以私聊哦

//动态分配
#include<stdlib.h>
#define InitSize 10
typedef struct{
	int *data;
	int MaxSize;
	int length;
}SqList;
void InitList1(SqList &L){//初始化1
	for (int i = 0; i < L.MaxSize; i++)
		L.data[i] = 0;
	L.length = 0;
}
void InitList(SqList &L){//初始化2
	L.data = (int*)malloc(InitSize*sizeof(int));//用malloc函数申请一片连续的储存空间
	L.length = 0;
	L.MaxSize = InitSize;
}
void IncreaseSize(SqList &L, int len){//增加动态数组的长度
	int *p = L.data;
	L.data = (int*)malloc((L.MaxSize+len)*sizeof(int));
	for (int i = 0; i < L.length; i++){
		L.data[i] = p[i];
	}
	L.MaxSize = L.MaxSize + len;//顺序表增加长度len
	free(p);//释放原来的内存空间
}
void CreateList(SqList &L, int a[]){//创造
	int i = 0;
	for (int i = 0; i < L.MaxSize; i++)
		L.data[i] = a[i];
}
void PrintList(SqList L){//打印
	int i = 0;
	for (int i = 0; i < L.MaxSize; i++)
		printf("%d ", L.data[i]);
	printf("\n");
}
int main(){
	SqList L;//声明
	InitList(L);
	InitList1(L);
	PrintList(L);
	int a[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 1, 2 };
	CreateList(L, a);
	PrintList(L);
	IncreaseSize(L, 2);
	InitList1(L);
	PrintList(L);
	CreateList(L, a);
	PrintList(L);
	return 0;
}

运行结果

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员养成计划1.0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值