Initialization of dynamic array
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
struct dynamicArray
{
void** pAddr;
int capicity;
int size;
};
dynamicArray* init_Array(int capicity)
{
if (capicity <= 0)
{
return NULL;
}
dynamicArray* array = (dynamicArray*)malloc(sizeof(dynamicArray));
if (array == NULL)
{
return NULL;
}
array->pAddr = (void**)malloc(sizeof(void*)*capicity);
array->capicity = capicity;
array->size = 0;
return array;
}
int main()
{
dynamicArray* p=init_Array(5);
printf("动态数组的容量:%d 动态数组的大小:%d", p->capicity, p->size);
return 0;
}
Implementation of dynamic array insertion and traversal functions
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct person {
char name[32];
int age;
};
void print(void* data)
{
person *p = (person*)data;
printf("姓名:%s\t年龄:%d\n", p->name, p->age);
}
struct dynamicArray
{
void** pAddr;
int capicity;
int size;
};
dynamicArray* init_Array(int capicity)
{
if (capicity <= 0)
{
return NULL;
}
dynamicArray* array = (dynamicArray*)malloc(sizeof(dynamicArray));
if (array == NULL)
{
return NULL;
}
array->pAddr = (void**)malloc(sizeof(void*)*capicity);
array->capicity = capicity;
array->size = 0;
return array;
}
void insert_array(dynamicArray* array,int pos,void* data)
{
if (array == NULL)
{
return;
}
if (data == NULL)
{
return;
}
if(pos<0||pos>array->size)
{
pos = array->size;
}
if (array->size == array->capicity)
{
int newCapicity = array->capicity * 2;
void** newSpace = (void**)malloc(sizeof(void*) * newCapicity);
if (newSpace == NULL)
{
return;
}
memcpy(newSpace, array->pAddr, sizeof(void*) * array->capicity);
free(array->pAddr);
array->pAddr = newSpace;
array->capicity = newCapicity;
}
for (int i = array->size-1; i >= 0; i--)
{
array->pAddr[i+1] = array->pAddr[i];
}
array->pAddr[pos] = data;
array->size++;
}
void print_array(dynamicArray* array,void(*print)(void *))
{
if (array == NULL)
{
return;
}
if (print == NULL)
{
return;
}
for (int i = 0; i < array->size; i++)
{
print(array->pAddr[i]);
}
}
int main()
{
dynamicArray* p=init_Array(3);
printf("未插入元素前动态数组的容量:%d 动态数组的大小:%d\n", p->capicity, p->size);
person p1 = {
"大忽悠",18 };
person p2 = {
"小朋友",19 };
person p3 = {
"大忽悠",20 };
person p4 = {
"大朋友",21 };
insert_array(p, 0, &p1);
insert_array(p, 0, &p2);
insert_array(p, 0, &p3);
insert_array(p, 0, &p4);
print_array(p, print);
printf("未插入元素前动态数组的容量:%d 动态数组的大小:%d\n", p->capicity, p->size);
return 0;
}