动态数组的插入、删除、统计、打印
代码如下:
#include
#include
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;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87