急!c语言对数组元素的删除,添加操作

任意一个数组,入a[]={1,2,3,4};将a[2]去掉,a[]={1,3,4}
a[]={1,2,3,4};将a[2]前插入6,a[]={1,6,2,3,4}
急需啊~

删除函数,删除ptr中的ptr[in]元素,n是数组原来的长度。
void rmv(int *ptr,int in,const unsigned int n)
{
unsigned int i;
for (i=in; i<n-1; i++) {
*(ptr+i)=*(ptr+i+1);
}
realloc(ptr,sizeof(int)*(n-1));
}

-----------------------------------------------

插入函数,在整形数组ptr中的ptr[in]之前插入x,n是原数组的长度
void rin(int *ptr,int in,int x,const unsigned int n)
{
unsigned int i;
realloc(ptr,sizeof(int)*(n+1));
for (i=n; i>in; i--) {
*(ptr+i)=*(ptr+i-1);
}
ptr[in]=x;
}

需要包含stdlib.h头文件。

示例:

//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>

void rmv(int *ptr,int in,const unsigned int n)
{
unsigned int i;
for (i=in; i<n-1; i++) {
*(ptr+i)=*(ptr+i+1);
}
realloc(ptr,sizeof(int)*(n-1));
}
void rin(int *ptr,int in,int x,const unsigned int n)
{
unsigned int i;
realloc(ptr,sizeof(int)*(n+1));
for (i=n; i>in; i--) {
*(ptr+i)=*(ptr+i-1);
}
ptr[in]=x;
}
int main(int argc, char* argv[])
{
int *p,i;
p=calloc(6,sizeof(int));
for (i = 0; i<6; i++) {
p[i]=i;
}
*(p+2)=124;
for (i=0; i<6; i++) {
printf("%d ",p[i]);
}
putchar('\n');
rmv(p,2,6);

for (i=0; i<6; i++) {
printf("%d ",p[i]);
}
rin(p,2,258,5);
putchar('\n');
for (i=0; i<6; i++) {
printf("%d ",p[i]);
}
system("pause");
free(p);
return 0;
}
//---------------------------------------------------------------------------
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-10-18
main()
{
int i,a[5]={1,2,3,4},j=0,z=0;
for (i=0;i<4;i++)
if (i!=2)
a[j++]=a[i];
for (j=0;j<3;j++)
printf("%3d",a[j]);
for (i=0;i<5;i++)
if (i!=1)
a[z++]=a[i];
else
a[z++]=a[i];
for (z=0;z<5;z++)
printf("%3d",a[z]);

}
第2个回答  2021-03-23

相似回答