从1到100,每数到7的时候,把该数字提出来,剩下的数字继续循环,问最后剩下的一个数字是多少。

来源:互联网 发布:复购率高的产品 知乎 编辑:程序博客网 时间:2024/04/29 11:34

题目: 从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;
}

原创粉丝点击