⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yuesefu.cpp

📁 这是一个用C++语言编写的约瑟夫环问题,旁附说明,已在测试环境下成功通过
💻 CPP
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -