题目: 从1到100,每数到7的时候,把该数字 提出来,剩下的数字继续循环,问最后剩下的一个数字是多少。
思路:使用循环链表
代码:
#include <iostream>
using namespace std;
const int totalnum = 100;
typedef struct NUMBER
{
int num;
struct NUMBER *next;
}Number;
Number *Head = NULL;
Number *Tail = NULL;
void InputNum()
{
int i;
Number *tmp = NULL;
tmp = new Number;
tmp->num = 1;
tmp->next = Head;
Head = tmp;
Tail = tmp;
Tail->next = Head;
for(i = 1 ; i< totalnum;i++){
tmp = new Number;
tmp->num = i+1;
Tail->next = tmp;
tmp->next = Head;
Tail = tmp;
}
}
void OutPutNum()
{
Number *tmp = NULL;
Number *pre = NULL;
int i = 6;
tmp = Head;
while(tmp!= tmp->next)
{
pre = tmp;
tmp = tmp->next;
i--;
if(0 == i)
{
pre->next = tmp->next;
delete tmp;
tmp = new Number;
tmp = pre->next;
i = 6;
continue;
}
}
cout<<tmp->num<<endl;
}
int main(int argc,char *argv[])
{
InputNum();
OutPutNum();
return 0;
}