循环链表实现约瑟夫问题
2016-10-13 21:14
323 查看
#include<stdio.h> #include<stdlib.h> typedef struct node { int num; struct node *next; } data;//自定义结构体另一个名字 int main() { int i,j,n; int s=1;//从第几个开始数 int m=30;//总人数 data *p,*r,*head,*q ; head=(data *)malloc(sizeof(data));//头结点 p=head; printf("第几个人将会被扔向大海:\n"); scanf("%d",&n);//谁被扔向大海 for(i=1; i<=m; i++) { r=p; p=(data *)malloc(sizeof(data)); r->next=p; p->num=i; } p->next=head->next;//将最后一个与第一个连接起来,不是与头结点连接 p=p->next;//p指向第一个节点 j=1; while(j<s)//控制p首先指向谁,即从第几个人开始数 { p=p->next; j++; } printf("被扔向大海的是:\n"); do { for(i=1; i<n-1; i++)//由for循环控制九次一循环,由循环链表移动 { p=p->next;//for循环结束,p指向第八个节点 } q=p->next;//q指向第九个节点 printf("%d ",q->num); p->next=q->next;//将第八个节点与第10个节点连接 free(q);//删除第八个节点 p=p->next;//p指向第10个节点 m--;//总数减一,控制循环15次,扔15人 } while(m>15); printf("\n\n\n我的心血!\n"); return 0; }
相关文章推荐
- 约瑟夫问题简单实现-循环链表
- 约瑟夫问题--循环链表实现
- C++循环链表实现约瑟夫问题
- 约瑟夫问题的数学角度分析 C 数组实现 循环链表实现 递归实现时间复杂度O(logN)
- 循环链表范例(约瑟夫问题) 数组实现
- 约瑟夫问题(循环链表实现)
- Josephus(约瑟夫)问题----分别用循环链表和数组实现
- 约瑟夫问题 循环链表实现和数字处理实现
- 循环链表实现约瑟夫问题
- 循环链表范例(约瑟夫问题)指针实现
- 循环链表实现约瑟夫问题
- 循环链表实现约瑟夫问题,拉丁方阵问题
- 约瑟夫问题(Josephus Problem) 用双向循环链表实现
- 用循环链表实现约瑟夫问题
- 利用循环链表实现约瑟夫问题的求解
- C++单向加双向循环链表实现约瑟夫问题
- poj 3254约瑟夫问题(队列实现)
- 一道关于孩子分糖的问题!!循环链表实现
- 一道关于孩子分糖的问题!!循环链表实现
- 面试题之约瑟夫问题-----循环链表简单详述