约瑟夫环 数组与链表实现
来源:互联网 发布:红蜘蛛多媒体软件 编辑:程序博客网 时间:2024/05/16 19:24
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。
从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,
从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,
数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列.
1、数组实现
void JosephArrary(int a[],int n,int k){int count,len,i,j,m;int *b=new int[n];count=0;len=n;i=0;j=0;m=0;while(len>0){if(a[j]!=-10000) //剔除0的影响 如果设置a[j]!=0,输入数组中有0,不能通过{count++;if(count==k){b[m++]=a[j];a[j]=-10000;count=0;len--;}}j++;if(j==n) j=0;}for(i=0;i<n;i++)cout<<b[i]<<" ";cout<<endl;delete [] b;}2、链表实现
struct node {int data;node *next;};
node * CreateLink(int n){node *p,*q,*head;head=new node;q=new node;head=q=NULL;int data;for(int i=0;i<n;i++){p=new node;cin>>data;p->data=data;if(head==NULL)head=q=p;else{q->next=p;q=p;}}q->next=head;return q; //考虑到报数为1出环的情况}
void JosephLink(node *head,int len,int k){node *p,*t;p=new node;int count,n;count=0;n=0;p=head;while(p){t=p->next;count++;if(count==k){cout<<t->data<<" ";count=0;p->next=p->next->next;delete t;n++;if(n==len)return;}p=p->next;}cout<<endl;}
0 0
- 约瑟夫环 数组与链表实现
- 数组实现约瑟夫环
- 约瑟夫环数组实现
- 约瑟夫环数组实现
- 约瑟夫环数组实现
- 约瑟夫环--数组实现
- 数组实现约瑟夫环
- 循环链表实现约瑟夫环(动态数组实现)
- 约瑟夫环的实现---数组模拟链表
- 用数组和链表实现约瑟夫环问题
- 约瑟夫环(数组和链表实现方式)
- 约瑟夫环的数组实现
- 约瑟夫环(数组模拟实现)
- 利用数组实现约瑟夫环
- Java 数组实现约瑟夫环
- 约瑟夫环的数组实现
- 用数组实现约瑟夫环
- 约瑟夫环java数组实现
- www.mowblog.com
- java 实现提示音
- LeetCode OJ 3 Longest Substring Without Repeating Characters 小结
- C语言操作之单链表操作之删除
- 彻底搞定二分图的匈牙利算法,最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖
- 约瑟夫环 数组与链表实现
- CC1101调试入门
- openfire创建插件
- C++ 标准库和标准模板库
- iOS开发系列—内存管理
- C语言之循环链表
- 最适合程序员编程的10款字体
- jQuery的简单了解
- PAT 1093. Count PAT's (25)