news 2026/10/27 2:04:33

关于位置动态数组函数的设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
关于位置动态数组函数的设计

概述

我们已经完成动态数组,但是将所有方法写在同一个函数里,十分的繁杂,所以要把操作动态数组的所有功能设计成一个个独立的函数。
整体的主函数框架不变,但是要把具体的操作方法拿出来写到另外的函数中。

扩容方法

形式:返回值 方法名(需要用到的数据){}

int *expand(int *arrP, int *len) { //在原数组长度上2陪扩容(开辟新的内存空间,以字节为单位) int nLen = (*len) * 2; int *nArrP = (int *)malloc(nLen *sizeof(int)); //复制数据 for (int i = 0; i < *len; i++) { nArrP[i] = arrP[i]; } //更新内存地址 arrP = nArrP; len = &nLen; return arrP; }

在这里的用到的参数不是数组本身和长度本身,而是他们所在的地址。长度本身不能随着我们之后的变化而变化,只有地址的变化才可以。
***需要注意长度更新的时候要有取值符。从而去改变长度的大小。
并且数据是应该要返回的,所以在这里我们用的是int返回值。可以理解为数组的长度属于int形式,所以这里返回值也是int形式。

添加数据

int *add(int *arrP, int *size, int *len, int data) { //判断是否需要扩容 if (*size == *len) { arrP = expand(arrP, len); } arrP[(*size)] = data; (*size)++; return arrP; }

在添加数据的方法当中扩容就可以直接调用expand方法。需要注意其中的属性如size,len等等这些都需要用到他们的地址,去改变他们的具体数值。

删除数据

删除数据分为两种。
①删除具体的某个位置的数据。
②删除具体某个数据。
在这里需要多加的一个就是第二种当中如果输入的index时候需要发出的指令。

if (index < 0 || index >= (*size)) { printf("index 越界,请重新输入!\n"); return -1; }

这里return -1表示操作停止。
并且这里需要多加一步,先保存被删除的数据。

int removeData = arrP[index];

然后再将后面的数据前移,

for (int i = index; i < (*size); i++) { arrP[i] = arrP[i + 1]; } (*size)--; return removeData;

然后再返回到被删除的数据。
另外一种情况是删除指定数据。

int del(int *arrP, int *size, int data) { for (int i = 0; i < *size; i++) { if (arrP[i] == data) { for (int j = i; j < *size - 1; j++) arrP[j] = arrP[j + 1]; (*size)--; return 1; } } return 0; }

利用循环一个一个确认数组中是否有对应的数据。如果有的话,删除运行成功。

方法调用

最后在主函数中调用写好的各个方法,避免重复。可以使代码更加简洁。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 2:04:12

超级具身智能核心引擎解析(1):TVA-World-FRA架构下的可解释性决策引擎

前沿技术探索:FRA核心定义与设计理念 FRA(Factorized Robotic Agent, FRA,亦称:因式分解机器人智能体)是一套因式化数实融合一体化新型智能系统,核心设计理念是全链路系统解耦,将机器人作业的感知、推理、动作执行三大核心能力拆解为独立平行子模块,整合为统一、闭环、…

作者头像 李华
网站建设 2026/10/27 2:03:36

通义千问对话bx-ua

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口 等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间点击头像看简介…

作者头像 李华
网站建设 2026/10/27 2:03:36

大白话模型.2:LLM的工作原理

LLM&#xff08;大语言模型&#xff09;工作原理 1. LLM 核心原理 预测下一个词——概率模型。 抛开复杂的算法&#xff0c;其底层运行机制极其简单&#xff1a;给定前文&#xff0c;计算下一个最可能出现的词是什么。 而我们输入的内容是提示词&#xff08;Prompt&#xf…

作者头像 李华