循环链表 猴子选大王
来源:互联网 发布:淘宝达人互动视频教程 编辑:程序博客网 时间:2024/05/17 03:19
/* 循环链表 猴子选大王*/#include <stdio.h>#include <stdlib.h>typedef struct monkey { int num; struct monkey * next;} monkey_t;//head指向第一个节点,tail指向最后一个节点monkey_t *head = NULL, *tail = NULL;void create(int nn) { //猴子的个数 int i; monkey_t *p = NULL, *q = NULL; //p指向一个新分配的节点,q指向当前最后一个节点 p = (monkey_t *)malloc(sizeof (monkey_t)); p->num = 1; p->next = NULL; head = p; q = p; for (i = 2; i <= nn; i++) { p = (monkey_t *)malloc(sizeof (monkey_t)); p->num = i; p->next = NULL; q->next = p; q = p; } tail = q; tail->next = head; //形成闭环}int select(int mm) { int x = 0, res; monkey_t *p = NULL, *q = NULL; //p指向当前要判断的节点,q跟随在p的后面,比p慢一拍 q = tail; do { p = q->next; //定位p x++; if (x % mm == 0) { printf("The deleted monkey's number is No.%d\n", p->num); q->next = p->next; free(p); //p = NULL; } else { q = p; //q跟进一步 } } while (q != q->next); //循环直到只剩下一个节点 //head = q; res = q->num; free(q); return res;}int main() { int n, m; printf("Please input the number of monkey.\n"); scanf("%d", &n); printf("Please input the number of interval m.\n"); scanf("%d", &m); create(n); printf("monkey king is No.%d\n", select(m)); return 0;}
0 0
- 循环链表---猴子选大王
- 循环链表 猴子选大王
- 循环链表-约瑟夫问题-猴子选大王
- 链表学习之猴子选大王
- 循环链表实现Joseph环(约瑟夫环)猴子选大王类似问题
- 第四周实践项目5 猴子选大王(循环链表)
- 链表经典问题——猴子选大王
- 约瑟夫问题(猴子选大王) 链表实现
- 猴子选大王问题
- 猴子选大王程序
- 约瑟夫 猴子选大王
- 猴子选大王
- 猴子选大王游戏
- 猴子选大王问题
- 猴子选大王
- 猴子选大王
- 猴子选大王问题
- 猴子选大王
- 微信开发学习日记(一):快速阅读5本书,掌握整体背景
- iOS问题
- hdu 1010 Tempter of the Bone
- bash脚本配合ant多渠道打包
- 【BZOJ3892】【Usaco2014 Dec】Marathon (Silver and Bronze) 暴力动规
- 循环链表 猴子选大王
- Tomcat打包时多项目共享jar和精确指定jar版本
- iOS开发——创建你自己的Framework
- gdb多线程调试锁定线程
- IOS8 通讯录访问授权
- swift UI专项训练17 SearchBar搜索条
- 兔子-蓝牙 bluetooth (一) 入门
- CodeForces 166E Tetrahedron
- cocos2d -js 解决定时器schedule误差