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