class DongShuzu
{
private:
int* ShuZuTou; //首地址
unsigned int iRongLang; //容量
unsigned int iShuLiang; //已存储的数量
void ZengJiaKongJian(); //增加空间
void ChuShiHua(); //初始化
public:
DongShuzu();
~DongShuzu();
public:
void ZengJia(int iShuJu); //尾部增加
void ZengJiaZhong(int iShuJu, unsigned int iXiaBiao); //中间插入
void ShanChuWei(); //删除尾部数据
void ShanChuZhongJian(unsigned int iWeiZhi); //删除中间元素
void ShanChuQuanBu(); //删除全部数据
void ShiFang(); //释放动态数组
void Shuchu(); //输出
};
DongShuzu::DongShuzu()
{
ChuShiHua(); //初始化
}
DongShuzu::~DongShuzu()
{
delete[]ShuZuTou; //释放空间
}
1.初始化
//初始化
void DongShuzu::ChuShiHua()
{
iRongLang = 5;
ShuZuTou = new int[sizeof(int) * iRongLang];
iShuLiang = 0;
}
2.判断是否满了,并且增加10个容量
//增加空间
void DongShuzu::ZengJiaKongJian()
{
//判断是否满了
if (iShuLiang == iRongLang)
{
//容量变大
iRongLang += 10;
//申请空间
int* ptemp = new int[sizeof(int) * iRongLang];
if (NULL != ptemp)
{
memset(ptemp, 0, sizeof(int) * iRongLang);
//将原数据复制到新空间
unsigned int i = 0;
for (i = 0; i < iShuLiang; i++)
{
ptemp[i] = ShuZuTou[i];
}
//释放原空间
delete[]ShuZuTou;
//将数组头指向新空间
ShuZuTou = ptemp;
}
}
}
3.尾部增加
//尾部增加
void DongShuzu::ZengJia(int iShuJu)
{
//判断是否满了,并增加空间
ZengJiaKongJian();
//装数据
ShuZuTou[iShuLiang] = iShuJu;
//已存储数量++
iShuLiang++;
}
4.中间插入
//中间插入
void DongShuzu::ZengJiaZhong(int iShuJu, unsigned int iXiaBiao)
{
//判断是否满了,并增加空间
ZengJiaKongJian();
//下标大于数量
if (iXiaBiao >= iShuLiang)
{
iXiaBiao = iShuLiang;
}
//向后挪
for (unsigned int i = iShuLiang; i > iXiaBiao; i--)
{
ShuZuTou[i] = ShuZuTou[i - 1];
}
//数据赋值到指定的位置
ShuZuTou[iXiaBiao] = iShuJu;
//数量加1
iShuLiang++;
}
5.删除尾部数据
//删除尾部数据
void DongShuzu::ShanChuWei()
{
iShuLiang -= 1;
}
6.删除全部元素
//删除全部元素
void DongShuzu::ShanChuQuanBu()
{
iShuLiang = 0;
}
7.释放动态数组
//释放动态数组
void DongShuzu::ShiFang()
{
iShuLiang = 0;
iRongLang = 0;
free(ShuZuTou);
ShuZuTou = NULL;
}
8.删除中间元素
//删除中间元素
void DongShuzu::ShanChuZhongJian(unsigned int iWeiZhi)
{
//后边的往前移动
for (unsigned int i = iWeiZhi - 1; i
9.输出
//输出
void DongShuzu::Shuchu()
{
if (NULL == ShuZuTou)
{
cout<<"参数错误";
return;
}
cout << "容量: " << iRongLang << " " << "已存储数量:" << iShuLiang << endl;
cout<<"数据: ";
for (unsigned int i = 0; i < iShuLiang; i++)
{
cout << ShuZuTou[i] << " ";
}
cout<<"n";
}



