c语言 用最少的资源(内存 cpu)将一个元素插入一维数组指定的位置中去

[复制链接]
查看11 | 回复2 | 2010-6-18 21:27:41 | 显示全部楼层 |阅读模式
有一个一维数组,我想怎样才能将一个元素插入其中的指定位置去,要用最少的资源,而且要安全。

回复

使用道具 举报

千问 | 2010-6-18 21:27:41 | 显示全部楼层
LS程序思路大体正确,但是实现有误。C的标准库函数memcpy需要被复制的存储器源和目标不能有重叠,否则后果不确定。对于LZ这种基本上总是有元素占用空间重叠的情况,应该用memmove代替memcopy。具体实例(假设数组类型是int)可以参考LS,关键行memcpy(array+pos+1,array+pos,sizeof(int)*(maxcnt-pos);改为memmove(array+pos+1,array+pos,sizeof(int)*(maxcnt-pos));即可(LS还漏了个括号= =)。这行代码把&array[pos]处开始到数组结尾的所有元素向后移动一个位置,以便在&array[pos]起始的地址空间空
回复

使用道具 举报

千问 | 2010-6-18 21:27:41 | 显示全部楼层
int insert(int array[],int value,int pos,int maxcnt){assert(pos>=0&&pos<maxcnt);assert(array!=NULL);memcpy(array+pos+1,array+pos,sizeof(int)*(maxcnt-pos);array[pos]=value
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行