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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值