养生 装修 购物 美食 感冒 便秘 营销 加盟 小吃 火锅 管理 创业 搭配 减肥 培训 旅游

如何把一个数插入一堆数组中

时间:2024-11-05 14:48:23

题目中是一堆数组,显然各语言中只有一维数组,实际上不管一维还是多维数组,在内存中都是线性的一维数组,多维数组都是可以按一维数组来处理的。那么我们今天就探讨一下,在一维数组中如何插入一项。

如何把一个数插入一堆数组中

工具/原料

任意一个C++集成开发工具

前提说明

1、本文的例子:在一个有着10个数字的一维数组中第五位插入一个数字。使用语言:C++。开发工具:Dev-C++或者Devcpp如果您不熟悉Dev-C++的使用的话,可以参考我的另一篇经验。

方法一/步骤

1、我们都知道数组的大小在定义时是固定的,而且数组的元素的位置是固定的。因此如果想要在一个现有数组中插入一项数据的话,首先你需要保证数组的大小足够大,其次你需要将插入数据位置的后面所有数据向后移动。我们来看看演示。

如何把一个数插入一堆数组中

2、上面的演示中,我们预先了一个有着11个空间的数组,数组的前10个空间都有一个数字,分别是1到10。现在有一个数字11需要插入到第5个位置。第一步,先将5到10的6个空间向后移动一位。

如何把一个数插入一堆数组中

3、我们再来看看移动后的情况是什么样的。

如何把一个数插入一堆数组中

4、既然位置已经空出来了,我们直接将数字10填入空出来的地方就行了。

如何把一个数插入一堆数组中

5、下面就是编写代码来实现这稍僚敉视个功能了。代码如下:#include<iostream>usingnamespacestd;//函数printarray是为了将数组输出vo足毂忍珩idprintarray(int*arr){for(inti=0;i<11;++i){ cout<<arr[i]<<"";}cout<<endl;}intmain(intargc,char**argv){ intarr[11]={1,2,3,4,5,6,7,8,9,10}; for(inti=10;i>3;--i) { arr[i]=arr[i-1]; cout<<"第"<<i<<"位数拷贝到第"<<i+1<<"位数的位置"; printarray(arr);//输出每一次移动以后数组内的实际情况 } arr[4]=11; cout<<"\n最终结果为:"<<endl; printarray(arr); return0;}可以看到我们成功实现了要求。

如何把一个数插入一堆数组中

方法二/步骤

1、方法一时,我们在定义数组的时候预先多留了一个位置。那么假如我们定义时只定义了10个空间怎么办。难道还按照方法一去做吗?如果你真的去这么做了或许也会得到正确的结果,但是迟早有一天会出错的,因为你超出数组的空间去写数据很有可能会对其他有用数据造成破坏,严重者导致其他程序崩溃或者系统崩溃。所以不要那么去做。那该怎么办呢?还是先来看看演示吧!

如何把一个数插入一堆数组中

2、首先,我们需要丐蹄答骊给11个数字找到足够的空间。显然原来的10个空间是不够的。那么只能另找一块地方了。就是动态的向系统申请一块能够放下11个数字的空间,注四歹吭毳意这里的11个空间与预先定义的那10个空间是不同的,它们在内存中的位置差别很大。如果您想要详细了解的话,请百度搜索“应用程序内存分配”关键字来学习。这里我可以告诉您的是,我们预先定义的10个空间是在程序的栈区,而动态申请的11个空间是在堆区。

如何把一个数插入一堆数组中

3、那么空间找到了,该怎么插入数字11呢。我们先将1-10这10个数字分开拷贝纸至新的空间。

如何把一个数插入一堆数组中

4、最后再将11放入新空间的第五个位置。

如何把一个数插入一堆数组中

5、好,我们可以开始写代码了。代艨位雅剖码如下:#include<iostream>#includ髫潋啜缅e<string.h>usingnamespacestd;//函数printarray是为了将数组输出voidprintarray(int*arr){for(inti=0;i<11;++i){ cout<<arr[i]<<"";}cout<<endl;}intmain(intargc,char**argv){ intarr[10]={1,2,3,4,5,6,7,8,9,10}; //采用new操作法来动态申请11个Int的内存,如果是C语言需要用malloc来分配 //C语言:int*newarr=(int*)malloc(11*sizeof(int)) int*newarr=newint[11]; memset(newarr,0,44);//是为了将申请到的内存全部清0,否则输出时会有垃圾数据 for(inti=0;i<10;++i) { if(i>=4) {newarr[i+1]=arr[i]; } else { newarr[i]=arr[i]; } printarray(newarr);//打印输出每一次移动后的newarr数组 } newarr[4]=11; cout<<"\n最终结果为:"<<endl; printarray(newarr); return0;}结果也是正确的,非常好。

如何把一个数插入一堆数组中

© 一点知识