首页 > 学院 > 开发设计 > 正文

简单的约瑟夫环

2019-11-06 09:11:25
字体:
来源:转载
供稿:网友

N个人围成一圈顺序编号,从1号开始按1、2、3顺序报数,报3者退出圈外,其余的人再从1、2、3开始报数,报3的人再退出圈外,依次类推。请按退出顺序输出每个退出人的原序号。

思路:建立单循环链表,用两个指针表示,依次修改指针,删除报到3的指针.....

#include <iostream>using namespace std;typedef struct node{	int num;	struct node*next;}LNode;int main(){	LNode *head,*p,*q;	int n;	cout<<"请输入总人数:";	cin>>n;	p=(LNode*)malloc(sizeof(LNode));//申请头结点	p->num=1;	p->next=NULL;	head=p;	for(int i=1;i<n;++i)	{		p->next=(LNode*)malloc(sizeof(LNode));		p=p->next;		p->num=i+1;	}	p->next=head;	p=head;	cout<<"输出序列:"<<endl;	while(p->next!=p)	{		q=p->next;		p=q->next;		q->next=p->next;		cout<<p->num<<" ";		delete p;		p=q->next;	}	cout<<p->num<<endl;	delete p;	return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表