随笔 - 62  文章 - 0  评论 - 0  阅读 - 11447

创建顺序表(动态分配)

#include<stdio.h>
#include<stdlib.h>
#define InitSize 10//默认的最大长度

//定义结构体
typedef struct {
	int *data;	//指示动态分配的指针
	int MaxSize;	//顺序表的最大容量
	int length;	//顺序表的当前长度
} SqList;

//初始化顺序表
void InitList(SqList &L) {
	L.data = (int*)malloc(InitSize * sizeof(int));	//用malloc函数申请一片连续的储存空间
	L.length = 0;	//将顺序表的初始长度设置为0
	L.MaxSize = InitSize;	//顺序表的初始最大容量定为默认最大长度
}

//增加动态数组长度(增加长度为len)
void IncreaseSize(SqList &L, int len) {
	int* p = L.data;	//将data的指针值赋给p
	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);	//释放原来的内存空间
}
int main() {
	SqList L;
	InitList(L);	//调用初始化函数
	IncreaseSize(L, 8);	//调用增长函数,增加的长度为8
	return 0;
}
posted on   沁鱼  阅读(64)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示