面试碰到的一道编程题,当时没有细想去做
有一个数组a[1000],要求每隔两个数删掉一个数,到末尾则又循环到开头继续进行,求最后一个被删掉的数的原始下标位置
例如,一个数组:{0, 1, 2, 3, 4, 5, 6, 7}
- 0->1->2(第一遍,删除)->3->4->5(第一遍,删除)->6->7->
- 0(第二遍,删除)->1->2(已删除)->3->4(第二遍,删除)->5(已删除)->6->7 …
- 循环直到数组中最后一个元素被删除
#define ARRAY_SIZE_MAX 1000
#define DEL_ARRAY_FLAG 1
#define DEL_GAP_VALUE 2
/* 获取当前数组可用的下标值
* array: 需要操作的数组名
* idx:数组下标值,由于其值需要被改变,所以使用指针传递
*/
static void get_index(int *array, int *idx)
{
int tmp = *idx; //继承当前数组下标