c语言插入数组元素(数组)

c语言插入数组元素(数组),第1张

C语言中,数组是一组连续的相同类型的数据集合。 所以要在数组中插入元素,需要按照以下步骤:

1、找到插入点;

2、将插入点所在元素,及之后的所有元素,都向后移动一个单位;

3、将插入点赋值为要插入的元素。

以固定位置插入,代码举例如下:

#include <stdio.h>

void insert(int *a, int n, int i, int v)

//将长度为n的数组a, 下标为i的位置插入值为v的元素。 插入后,数组长度为n+1.

{

    int j

    for(j = n-1 j>=i j --)//将i及以后的后移一位。 由于是固定位置插入,所以不需要查找插入位置。 

        a[j+1] = a[j]

    a[i] = v//插入元素。 

}

int main()

{

    int a[5] = {1,3,6,7}/五个元素数组,初始化四个值。

    int i

    

    insert(a, 4, 2, 5)//将5插入到a[2]位置。 

    for(i = 0 i < 5 i ++)

        printf("%d ", a[i])//输出结果,为1 3 5 6 7 

    return 0

}

#include "stdio.h"

#include "stdlib.h"

void main()

{

int *p,k,h,*q,i,j,e

printf("请输入数组中的元素的个数最大值:")

scanf("%d",&k)

p=new int[k]

if(p==NULL)

{

printf("不能分配空间!")

exit(0)

}

printf("请输入数组中的元素的个数:")//可以输入比数组长度小的个数

scanf("%d",&h)

printf("请输入数组中的元素(分别输入):\n")

for(i=0i<hi++)

scanf("%d",&p[i])

if(h==k)

{

q=new int[k+1]

if(p==NULL)

{

printf("不能分配空间!")

exit(0)

}

for(i=0i<ki++)

q[i]=p[i]

printf("请输入插入在第几个数的后面和要插入的数:")

scanf("%d%d",&j,&e)

for(i=ki>=ji--)

q[i+1]=q[i]

delete p

q[j]=e

for(i=0i<k+1i++)

printf("%d\t",q[i])

delete q

}

if(h<k)

{

printf("请输入插入在第几个数的后面和要插入的数:")

scanf("%d%d",&j,&e)

for(i=h-1i>=ji--)

p[i+1]=p[i]

p[j]=e

for(i=0i<h+1i++)

printf("%d\t",p[i])

delete p

}

}

我使用动态数组来考虑两种情况

1.数组满的,需要从新申请数组,然后后移;

2.直接后移;


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11558167.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存