小孩报数问题3750
2015-07-16 18:31
489 查看
有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。
//方法一双向循环链表 #include<iostream> #include<cstring> #include<stdio.h> using namespace std; struct List//双向链表结构体 { char name[20]; struct List *front; //前指针 struct List *rear; //后指针 }; List* create(int n) { List *node,*head; //定义头结点和尾结点 head = node = new List; for(int i = 2;i <=n ;i++) { node->rear = new List; //初始化后指针 node->rear->front = node; //双向指向 node = node->rear; } node->rear = head; head->front = node; return head; } List* move(List* p,int step) //链表计数移动 { for(int i = 1;i < step ; i++) { p = p->rear; } return p; } List* remove(List* p) //删除结点操作 { p->front->rear = p->rear; p->rear->front = p->front; p = p->rear; //删除结点三步走 return p; } int main() { int n,w,s; scanf("%d",&n); List *node,*head; head = node =create(n); for(int i =1;i <= n;i++) { scanf("%s",node->name); node = node->rear; } scanf("%d%d",&w,&s); node = move(head,w); while(node->rear != node) //循环遍历终止条件 { node = move(node,s); printf("%s\n",node->name); node = remove(node); } printf("%s\n",node->name); //最后一个结点要输出 system("pause"); }
//方法二单向链表 #include<stdio.h> #include<iostream> using namespace std; struct ch { char name[100]; struct ch *next; }; int main() { int N=0,i=0,w=0,s=0,j=0; struct ch *p = NULL,*head = NULL,*NEW = NULL,*q = NULL; scanf("%d",&N); for(i=0;i<N;i++) { NEW = new ch(); scanf("%s",NEW->name); if(p==NULL) { head = NEW; p = NEW; } else { p->next = NEW; p = NEW; } } p->next = head; scanf("%d%d",&w,&s); p = head; for(i=1;i<w;i++) { p = p->next; } q = p; for(i=0;i<N;i++) { for(j=1;j<s;j++) //循环一次出去一个人少一个人 { q = p; p = p->next; } printf("%s\n",p->name); q->next = p->next; p = q->next; } system("pause"); }
相关文章推荐
- 2015.7.16(低开高走,今天被大智慧的庄家忽悠了)
- 把二元查找树转变成排序的双向链表
- Java学习之路0716(三)
- 树链剖分
- 各种数据流比较
- android PopupWindow实现从底部弹出或滑出选择菜单或窗口
- 如何提升产品运营人员的工作效率|新闻资讯|诸葛IO-精细化运营分析工具
- 同源策略——浏览器安全卫士
- $.toJSON的使用方法
- 最大网络流算法
- mybatis中resultMap和resultType的区别
- c#编程技术之------初衷
- Android中xml文件的使用
- 反射的概念
- hdu 2015
- Substring with Concatenation of All Words
- [JSOI2007][BZOJ1029] 建筑抢修
- MyBatis缓存结构
- java基础第七天
- 第一天写博客