单循环链表--约瑟夫环
2017-04-20 11:19
274 查看
#include <stdio.h> #include <stdlib.h> //单链表类型定义 typedef struct node { int data; struct node *next; }LNode, *LinkList; //单链表的创建 LinkList Creat_LinkList(int n ) { //代码 LinkList H,p,q; H = (LinkList)malloc(sizeof(LNode)); H->next = NULL; q=H; for (int i=1; i<=n; i++){ p = (LinkList)malloc(sizeof(LNode)); p->data = i; p->next = NULL; q->next = p; q = q->next; } q->next=H; return q; } //链表输出 void Print_LinkList(LinkList H) { //代码 LinkList p; p = H->next; while (p != H){ printf("%d->",p->data); p=p->next; } printf("\n"); } //约瑟夫环 LinkList select(LinkList r,int m) { //代码 LinkList p,q; int cnt=0; //删除头,令r为头 r->next = r->next->next; p=r; while (p!=p->next) { cnt++; q = p; p=p->next; if (cnt == m) { q->next = p->next; cnt=0; printf("%d号出局\n",p->data); } } return p; } main() { LinkList r,p; int num,m; printf("请输入猴子总数:"); scanf("%d",&num); r=Creat_LinkList(num ); printf("H表:\n"); Print_LinkList(r->next); printf("请输入出局数字:"); scanf("%d",&m); printf("猴子出列顺序:\n"); p=select(r,m); printf("\n猴王是: %d\n",p->data); }
相关文章推荐
- 线性表---单循环链表(约瑟夫环问题)
- 用个循环链表解决约瑟夫环问题
- 约瑟夫环问题单循环链表解法
- 约瑟夫环---单向循环链表
- 循环链表 约瑟夫环
- 循环链表解约瑟夫环
- php-约瑟夫环-循环链表
- 数据结构:循环单向链表——约瑟夫环
- 链表初解(三)——约瑟夫环之循环链表实现
- java单向循环链表实现约瑟夫环
- 单循环链表 解决约瑟夫环的问题
- 数据结构(4)--循环链表的应用之约瑟夫环问题以及线性表总结之顺序表与链表的比较
- C++循环链表之约瑟夫环的实现方法
- 循环链表解决约瑟夫环问题
- [转]用单向循环链表解决约瑟夫环问题
- 数据结构 循环链表的应用:约瑟夫环问题
- 单向循环链表的实现以及约瑟夫环的实现
- 用单向循环链表存储结构模拟约瑟夫环(C++)
- 第十课 循环链表,约瑟夫环问题的解决
- 约瑟夫环-单向循环链表