//定义一个指针变量保存首地址,MaxSize最大容量,Size当前元素个数
int *p = nullptr, MaxSize, Size = 0;
cout << "请输入申请的元素个数" << endl;
cin >> MaxSize;
p = new int[MaxSize];//C++
//p=(int*)malloc(sizeof(int)*MaxSize);//C语言
//添加元素
for (int i = 1;; i++)
{
int n;
cin >> n;
if (-1 == n)
break;
//判断是否有内存添加元素
if (MaxSize == Size)
{
//扩容
//重新申请一段新的内存(原来容量的2倍)
int *pTemp = new int[MaxSize * 2];
MaxSize *= 2;//容量为原来的2倍
//把原来的数据拷贝到新的内存
for (int i = 0; i < Size; i++)
{
pTemp[i] = p[i];
}
//释放原来的内存空间,指针变量p指向新的内存空间
delete[] p;
p = pTemp;
}
//在末尾添加元素
p[Size++] = n;
}
cout << MaxSize << ":" << Size << endl;
//删除满足条件的第一个元素
for (int i = 0; i < Size; i++)
{
//判断是否满足删除条件,后面元素前移一位
if (5 == p[i])
{
for (int j = i + 1; j < Size; j++)
{
p[j - 1] = p[j];
}
--Size;//元素个数-1
//i--;删除多个
break;//删除1个
}
}
//排序
for (int i = 1; i < Size; i++)
{
int Temp = p[i];
int j = i - 1;
for (; j >= 0; j--)
{
if (p[j]>Temp)
p[j + 1] = p[j];
else
break;
}
p[j + 1] = Temp;
}
for (int i = 0; i < Size; i++)
{
cout << p[i] << endl;
}
delete[] p;
p = nullptr;