首页 > 其他分享 >创建顺序表(动态分配)

创建顺序表(动态分配)

时间:2023-11-18 17:12:10浏览次数:29  
标签:顺序 int 创建 动态分配 MaxSize len 长度 data

#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;
}

标签:顺序,int,创建,动态分配,MaxSize,len,长度,data
From: https://www.cnblogs.com/qinyu33/p/17840750.html

相关文章

  • MySQL索引的创建与设计原则
    索引的创建与设计原则1.索引的声明与使用1.1索引的分类MySQL的索引包括普通索引,唯一性索引,全文索引,单列索引,多列索引和空间索引等...。从功能逻辑上说,索引主要有4种,分别是普通索引,唯一索引,主键索引,全文索引。按照物理实现方式,索引分为2种:聚簇索引和非聚簇索引。按照......
  • sql server 创建用户 指定权限
    sqlserver创建用户指定权限     'db_owner'--拥有数据库全部权限,包括删除数据库权限'db_accessadmin'--只给数据库用户创建其他数据库用户的权限,而没有创建登录用户的权限。'db_securityadmin'--可以管理全部权限、对象所有权、角色和角色成员资格'db_ddladmin'......
  • 创建顺序表(C++)
    include<stdio.h>defineMaxSize10 //定义最大长度//创建顺序表typedefstruct{intdata[MaxSize]; //创建数组data用来储存数据元素,并将data的长度设置为MaxSizeintlength; //顺序表的当前长度}SqList;//初始化顺序表voidInitList(SqList&L){for(inti=0;i<......
  • 4.4 Windows驱动开发:内核监控进程与线程创建
    当你需要在Windows操作系统中监控进程的启动和退出时,可以使用PsSetCreateProcessNotifyRoutineEx函数来创建一个MyCreateProcessNotifyEx回调函数,该回调函数将在每个进程的创建和退出时被调用。PsSetCreateProcessNotifyRoutineEx用于在系统启动后向内核注册一个回调函数,以监视......
  • 从路线创建要素线
     Autodesk论坛中的帖子,大家可以先点击上面的链接看一下原贴,我在写代码的过程中也遇到了同样的问题,因为没有直接的API可用,在论坛中搜索从而找到了这篇帖子。 经过我自己的测试,论坛中的方法可行: 1-GETPolylineFROMAlignmentWITHGetPolyline2-CreatesaFeatur......
  • multiprocessing创建多进程
    参考https://zhuanlan.zhihu.com/p/410731610方法1:#!/usr/bin/python#-*-coding:UTF-8-*-frommultiprocessingimportProcessimporttimeimportosdeftest_proc(num):foriinrange(num):print('子进程运行中,i=%d,name=%s,pid=%d'%(i,......
  • 在Rider 中使用Entity Framework Core UI 插件创建EFCore 的 Migration迁移文件时报错
    报错信息EFCoretoolsarerequiredtoexecutethisaction在点击报错信息中的发Fix进行安装时,再次出错这次是提示版本不匹配这里我使用的是EFCore7.0.14版本的报错原因没有安装dotnettool点击Fix进行安装时,是安装的最新版,是要是.net7的安装dotnettool直......
  • 为什么promise.then 和 promise.catch 捕获错误的顺序不一样?
    promise.then和promise.catch捕获错误的顺序不同的原因是它们的执行时机以及错误处理机制的不同。当一个Promise被拒绝(rejected)时,它会立即触发错误处理程序。如果存在一个或多个catch方法,它们将按照添加的顺序执行,并且只有第一个匹配的catch方法会被调用。这意味着,当一个错误发生时......
  • vue中created、watch和computed的执行顺序
    总结关于vue中created和watch的执行顺序相对比较简单,而其中computed是通过Object.defineProperty为当前vm进行定义,再到后续创建vNode阶段才去触发执行其get函数,最终执行到计算属性computed对应的逻辑。官网的生命周期图中,initreactivity是晚于beforeCreate......
  • cocos专栏第二章:创建项目与显示第一个物体
    创建第一个项目 从本节开始我们将详细的来开始学习CocosCreator的开发基础与操作。我们先来创建一个项目,打开CocosDashboard,选择”新建”,选3D游戏模板”Empty(3D)”,输入项目的名字(classGame)与路径(D:\Home\workspace),(注意项目的名字不要用中文与空格,要用英文缩写,同......