#ifndef C++LIB.H
#define C++LIB.H
template<typename T>
void Reverse(T a[], int n) // 将数组的前n个元素逆置
{
T temp;
for (int i = 0; i < n / 2; i++)
{
temp = a[i];
a[i] = a[n - 1 - i];
a[n - 1 - i] = temp;
}
}
template<typename T>
void Compact(T a[], int arraySize)
{
int free_index = 0; // 非零元素存放地址
for (int i = 0; i < arraySize;i++) // 检测整个数组
{
if (a[i] != 0) // 发现非零元素
{
if (i != free_index) // 前移
{
a[free_index] = a[i];
a[i] = 0;
}
free_index++;
}
}
}
#endif
#include <iostream>
#include "c++lib.h"
using namespace std;
int main()
{
int a[6] = { 1, 0, 3, 5, 0, 6 };
for ( int i : a)
{
cout << i << " ";
}
cout << endl;
Reverse(a, 6);
Compact(a, 6);
for (int i : a)
{
cout << i << " ";
}
return 0;
}