代码语言:javascript复制
int num = hp.size;
int front = 0;
int back = 1;
int row = 1;
while (num)
{
for (int j = front; j < back; j )
{
cout << hp.arr[j] << " ";
}
cout << endl;
num -= row;//输出完本行还剩的元素个数
//如果减去本行输出的个数小于0
if (num <= 0)
{
break;
}
row *= 2;//下一行要输出的元素个数
front = back;//定位下一行的起点
if (num - row <= 0)//如果当前的元素个数不够输出下一行的,直接定位下一行的back位置
{
back = hp.size;
}
else// 够则——手动定位结尾位置
{
back = row;
}
}