#include <iostream>
using namespace std;
typedef struct lnode
{
int data;
struct lnode* nxt;
}lnode, * linklist;
linklist l, k;
void creat(linklist& l)
{
l = new lnode;
l->nxt = NULL;
}
void init(linklist& l, int n)
{
linklist r = l;
int cnt = 1;
for (int i = 0; i < n; i++)
{
linklist p = new lnode;
p->nxt = NULL;
p->data = cnt++;
r->nxt = p;
r = p;
}
r->nxt = l->nxt;
}
int Joseph(linklist& l,int n,int m)
{
int ans = 0;
linklist p = l;
int cnt = 1;
while (n>=1)
{
for (int i = 1; i < m; i++)
p = p->nxt;
//cout << cnt << " : " << p->nxt->data << endl;
if (n == 1)
ans = p->nxt->data;
linklist t = p->nxt;
p->nxt = t->nxt;
delete t;
--n;
}
return ans;
}
int main()
{
int n, m;
cin >> n >> m;
creat(l);
init(l, n);
//print(l);
cout << "The final one is " << Joseph(l, n, m) << endl;
return 0;
}
数据结构实验二 :Joseph环
最新推荐文章于 2022-09-27 20:45:28 发布