动态数组的插入、删除、统计、打印
代码如下:
#include<stdio.h>
#include<stdlib.h>
void printList(int* p,int len)
{
int i;
for(i=0;i<len;i++)
{
printf("%d\n",p[i]);
}
}
int Count(int* p,int len)
{
int i,a=0;
for(i=0;i<len;i++)
{
if(p[i]!=-1)
{
a++;
}
}
return a;
}
void Insert(int *p,int len,int pos,int cha)
{
int i;
for(i=len-1;i>=pos-1;i--)
{
p[i+1]=p[i];
}
p[pos-1]=cha;
}
void Delete(int *p,int len,int pos)
{
int i;
for(i=pos-1;i<len;i++)
{
p[i]=p[i+1];
}
p[i]=-1;
}
int main(void)
{
int i,len=0;
int * base=(int *)malloc(10*sizeof(int));
int *newBase=(int*)realloc(base,(10+10)*sizeof(int));
if(base==NULL)
{
printf("申请失败\n");
}
if(newBase==NULL)
{
printf("申请失败2\n");
}
printf("base中的地址为: %p\n",base);
printf("newBase中的地址为: %p\n",newBase);
printf("\n");
for(i=0;i<10;i++)
{
base[i]=-1;
}
for(i=10;i<20;i++)
{
newBase[i]=-1;
}
for(i=0;i<5;i++)
{
base[i]=rand()%20;
}
printf("**************************************\n");
len =Count(newBase,20);
printf("数组中有效个数为%d\n",len);
Insert(newBase,len,3,20000);
Delete(newBase,len,3);
printList(newBase,20);
return 0;
}