yuesefu.cpp

来自「这是一个用C++语言编写的约瑟夫环问题,旁附说明,已在测试环境下成功通过」· C++ 代码 · 共 60 行

CPP
60
字号
#include<iostream>
using namespace std;

struct Node{
     int no;
     int date;
     Node *next;
};
Node *head,*last,*p,*pre;

void CinMM(int i,Node *p){
     cout<<"请输入NO"<<i<<"的密码:";
     cin>>p->date;
}//输入每人的密码 

void NewNode(int n,Node *p){
     head=last=new Node;//生成第一个结点 
     head->no=1;
     CinMM(1,head);
     for(int i=2;i<=n;i++)
     {
    	 Node *p=new Node;//生成新的结点 
    	 p->no = i;
         CinMM(i,p);
    	 last->next=p;
    	 last=p;
     }
     last->next=head;//最后一个的下一个为第一个人 
}//生成单向循环链表 

void PlayBS(int m,int n,Node *q){
     q=last;//q指向开始报数的前一个人 
     while(n>0)
     {
    	 for(int count=1;count<m;count++){
    		 q=q->next;
         }
    	 Node *p=q->next;
    	 m=p->date;
    	 cout.width(4);
      	 cout<<p->no; 
    	 q->next=p->next;//离开 
    	 delete p;//释放结点 
    	 n--;
     } 
}//开始报数    
     
int main()
{
     int m,n,num;
     cout<<"请输入人数:";
     cin>>n;
     cout<<"请输入首位密码:";
     cin>>m;  
     NewNode(n,p);//生成单向循环链表
     PlayBS(m,n,pre);//开始报数 
     cout<<endl;
     return 0;
} 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?