有一个数组a[1000]存放0--1000;要求每隔二个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。
/*
有一个数组a[1000]存放0--1000;要求每隔二个数删掉一个数,到末
尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。
*/
#include <cstdio>
#include <deque>
#include <algorithm>
#include <iterator>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include <assert.h>
#define null 0
using namespace std;
struct node
{
int data;
node* next;
};
int main()
{
node* head = new node;
head->data = 0;
head->next = null;
node* p = head;
for (int i = 1; i<1000; i++)
{
node* tmp = new node;
tmp->data = i;
tmp->next = null;
head->next = tmp;
head = head->next;
}
head->next = p;
while (p != p->next)
{
p->next->next = p->next->next->next; //0-1- 2 (delete) /
p = p->next->next;
}
cout << p->data<< endl;
system("pause");
return 0;
}