输出用的C++写了个四不像…
#include <iostream>
#include <malloc.h>
#include <stdio.h>
#include <string>
using namespace std;
//创建C的结构体
struct Dynamic_Array
{
int* Array_Header; //数组头
unsigned int Array_Cap; //数组容量
unsigned int Array_Num; //数组元素数量
};
void Initializaton(struct Dynamic_Array* P_Array)
{
P_Array->Array_Cap = 5;
P_Array->Array_Header = (int*)malloc(sizeof(int) * P_Array->Array_Cap); //初始化头地址
P_Array->Array_Num = 0;
}
void Add_Element(struct Dynamic_Array* P_Array, int Add_Data)
{
//判断数组是否满了
if (P_Array->Array_Cap == P_Array->Array_Num)
{
//增加容量10
P_Array->Array_Cap += 10;
//申请临时空间暂存原空间数据
int* PTemp = (int*)malloc(sizeof(int) * P_Array->Array_Cap);
//将原数据复制进进新空间
for (unsigned int i = 0; i < P_Array->Array_Num; ++i)
{
PTemp[i] = P_Array->Array_Header[i];
}
//将原空间释放
free(P_Array->Array_Header);
//原空间指向申请的临时空间
P_Array->Array_Header = PTemp;
}
//添加新数据
P_Array->Array_Header[P_Array->Array_Num] = Add_Data;
P_Array->Array_Num++;
}
void Output_Print(struct Dynamic_Array* MyArray)
{
if (MyArray == NULL)
{
cout << "参数错误" << endl;
return;
}
cout << "数组容量" << MyArray->Array_Cap << endl;
cout << "数组数据数量" << MyArray->Array_Num << endl;
cout << "数组数据" << endl;
for (unsigned int i = 0; i < MyArray->Array_Num; ++i)
{
cout << MyArray->Array_Header[i] << " ";
}
}
int main(void)
{
struct Dynamic_Array MyArray;
Initializaton(&MyArray);
for (int i = 0; i <= 15;++i)
{
Add_Element(&MyArray, i);
}
Output_Print(&MyArray);
free(MyArray.Array_Header);
return 0;
}