在任意位插入一个函数:
(1)先判断内存是否存满;
(2)判断插入位置是否正确(是否超出数组元素的范围);
(3)将插入位之后的元素后移;
(4)插入数字;
#include <stdio.h>
#define MAX_SIZE 20
int length(int *num) //求数组长度的函数
{
int len = 0;
while(*num != 0 ) //遍历数组,计算其元素个数
{
len++;
num++;
}
return len;
}
int *Insert_List(int *num ,int i,int x) //插入函数入口
{
int k;
int len;
len = length(num);
if(len == MAX_SIZE) //判断内存是否已满
{
printf("error!\n");
}
if(i < 1 || i > len + 1) //判断插入位置否正确
{
printf("error!\n");
}
if(i <= len) //将插入位置后的元素向后移位
{
for(k = len ; k > i - 1 ; k--)
{
num[k + 1] = num[k];
}
}
num[i - 1] = x; //将数值插入指定位
return num;
}
int main()
{
int i;
int j; //循环变量
int x;
int num[MAX_SIZE] = {1,2,3,4,5,6,7,8,9};
int len = length(num);
printf("len = %d \n",length(num));
for(j = 0 ; j < len ; j++) //输出数组的各个元素
{
printf("num[%d] = %d \n",j,num[j]);
}
printf("please input insert space.");
scanf("%d",&i);
printf("please input insert num.");
scanf("%d",&x);
Insert_List(num,i,x);
for(j = 0 ; j < len ; j++)
{
printf("num[%d] = %d\n",j,num[j]);
}
printf("len = %d\n",length(num));
return 0;
}
#include <stdio.h>
#define MAX_SIZE 20
int length(int *num)
{
int len = 0;
while(*num != 0)
{
len++;
num++;
}
return len;
}
int *Delete_LinkList(int *num,int i)
{
int len = length(num);
if(len = MAX_SIZE)
{
printf("error! \n");
}
if(i < 1 || i > len)
{
printf("error! \n");
}
if(i <= len)
{
for( ; i < len ; i++)
{
num[i - 1] = num[i];
}
}
return num;
}
int main()
{
int i;
int j;
int num[MAX_SIZE] = {1,2,3,4,5,6,7,8,9};
int len = length(num);
for(j = 0 ; j < len ; j++)
{
printf("num[%d] = %d \n",j,num[j]);
}
printf("please input delete space.\n");
scanf("%d",&i);
Delete_LinkList(num,i);
for(j = 0 ; j < len ; j++)
{
printf("num[%d] = %d \n",j,num[j]);
}
printf("len = %d \n",length(num));
return 0;
}
本文介绍了一种在数组中特定位置插入和删除元素的方法。首先通过一个函数计算数组的当前长度,然后根据用户输入的位置进行元素的移动。插入操作会将指定位置后的元素依次后移并插入新值;删除操作则将指定位置后的元素前移覆盖被删除的元素。
2610

被折叠的 条评论
为什么被折叠?



