数组不擅长插入(添加)和删除元素。 数组的优点是由于是连续的,所以检索数据很快。 但这也是缺点之一。 因为是连续的,所以插入元素时,插入点之后的所有元素都会向后移动。 删除元素时,删除点后,所有元素都会向前移动。
插入算法
#包含
入主(void ) )。
{
inta [ 23 ]={ 1,5,66,8,55,9,1,32,5,65,4,8,5,15,64,156,1564,15,1,8,9,7,215 };
int b[24]; //用于存储插入数字后的新数组,因为插入了另一个值,所以长度为24
索引; //插入值的下标,索引是“下标”的英语单词
int num; //插入的值
int i; //循环变量
printf ('请输入插入值的下标:');
scanf('%d ',Index );
printf ('请输入要插入的数值:';
scanf('%d ',num );
for(I=0; i24; I )
{
if(Iindex )。
{
b[i]=a[i]; /*循环变量I小于插入值位置Index时,各要素所在的位置不变*/
}
elseif(I==index ) )。
{
b[i]=num; //i等于索引时,向数组b分配插入值
}
else
{
b[i]=a[i-1]; /*由于插入了新元素,插入位置后各元素的存储位置将向后移动一个位置*/
}
}
for(I=0; i24; I )
{
printf(%d(x20 ),b[i];
}
打印((n );
返回0;
}
输出结果如下。
请输入要插入的值的下标。 10请输入要插入的值。 22
1 5 66 8 55 9 1 32 5 65 22 4 8 5 15 64 156 1564 15 1 8 9 7 215
删除算法
#包含
入主(void ) )。
{
inta [ 23 ]={ 1,5,66,8,55,9,1,32,5,65,4,8,5,15,64,156,1564,15,1,8,9,7,215 };
int b[22]; /*用于存储删除数字后的新数组。 由于值已被删除,长度为22*/
索引; //要删除的值的下标
int i; //循环变量
printf ('请输入要删除的值的下标:';
scanf('%d ',Index );
for(I=0; i23; I )
{
if(Iindex )。
{
b[i]=a[i]; /*循环变量I小于插入值位置Index时,各要素的存储位置不变*/
}
else
{
b[i]=a[i 1]; /*被删除值后面的所有元素将向前移动一个位置,被删除的值将被直接复盖*/
}
}
for(I=0; i22; I )
{
printf(%d(x20 ),b[i]; //x20表示空格
}
打印((n );
返回0;
}
输出结果如下。
请输入要删除的值的下标: 5
1 5 66 8 55 1 32 5 65 4 8 5 15 64 156 1564 15 1 8 9 7 215
实例
三十七、四十九、五十一、六十一。 设计程序执行一次数组中的数据删除和插入。
getchar ) )函数接收键盘输入:
输入字符' d '时,通过键盘输入数组中存在的整数n,删除数组中存在的整数。 删除后数组的各元素必须按照从小到大的顺序排列。
要求:不使用冒泡法和选择法实现删除数据后的排序操作。
输入字符' I '时,从键盘输入数组中不存在的整数m,将该整数m插入数组中。 插入后数组的各元素必须按照从小到大的顺序排列。
要求:不使用冒泡法和选择法实现数据插入后的排序操作。
输入和输出示例:
数组的排序结果为5、9、11、16、24、34、37、49、51、61
请输入要执行的操作(插入I (并删除) d ):d
请输入要删除的整数: 9
删除后的数组为5、11、16、24、34、37、49、51、61
请输入要执行的操作(插入I (并删除) d ):I
请输入要插入的整数: 13
插入后的数组为5、11、13、16、24、34、37、49、51、61
#包含
int main () )
{
inta [ 10 ]={ 5,9,11,16,24,34,37,49,51,61 };
int i=0,n=0,k=0;
char get;
for(I=0; i 10; I )
printf('=',a[i] );
打印((n );
printf ('请输入所需的操作(' I ',然后删除' d ' );
get=getchar (;
getchar (;
if(get=='d ' )
{
printf ('请输入要删除的整数。 n );
n=getchar (;
getchar (;
n -=48;
for(I=0; i 10; I )
{
if(a(I )==n ) ) ) ) ) ) ) ) ) )。
{
for (; i 10; I )
{
a[i]=a[i 1];
}
a[9]=0;
黑;
}
}
for(I=0; i 9; I )
printf('=',a[i] );
打印((n );
}
printf ('请输入所需的操作(' I ',然后删除' d ' );
get=getchar (;
getchar (;
if(get='I ' ) ) ) )。
{
printf ('请输入要插入的整数。 n );
scanf_s('%d ',n ); //小心陷阱,不能使用getchar ()。 因为13实际上是2个文字,所以回车后,n只吸收了‘1’,所以只能使用scanf_s )。
for(I=0; i 10; I )
{
if(a ) I ) nna ) I1 ) ) ) ) ) if(a ) I ) nna ) I1 ) ) ) ) ) ii ) ii ) nna ) ii ) ii ) ii ) ii ) ii ) ) ii ) ) ii ) ii ) ii ) ii ) ii ) ii ) ii ) ii ) ii ) ii ) ii ) ii ) ii )
{
k=i;
for(I=8; i k; I----)
{
a[i 1]=a[i];
}
a[k 1]=n;
布雷克;
}
}
for(I=0; i 10; I )
printf('=',a[i] );
}
返回0;
}
到此为止,我们已经介绍了有关在C语言数组中添加和删除元素的实现的文章。 有关在更多相关的C语言数组中添加和删除元素的信息,请搜索脚本房屋以前的文章或继续参阅下面的相关文章。 我想今后继续支持脚本屋。