📄 约瑟夫环--循环单链表.txt
字号:
#include<iostream>
#include<iomanip>
#include<stdlib.h>
using namespace std;
int main()
{
struct node{
int i;
int passwd;
node *next;
}*listlink,*curp,*lostp,*head;
curp=(node *)malloc(sizeof(node));
int n,m;
while(1){
cout<<"请输入人数n(0<n<=30):";
cin>>n;
if(n>0&&n<=30)
break;
system("cls");
}
if(n==1){
cout<<"出列编号是1"<<endl;
exit(1);
}
cout<<"请输入各人的密钥passwd(passwd>0):";
for(int i=1;i<=n;i++){
listlink=(node *)malloc(sizeof(node));
while(1){
cin>>listlink->passwd;
if(listlink->passwd<0)
cout<<"error passwd,please retype again:";
else break;
}
listlink->i=i;
if(i==1){
listlink->next=listlink;
head=listlink;
curp=listlink;
}
else{
listlink->next=head;
curp->next=listlink;
curp=listlink;
}
}
cout<<"请输入m(m>=1):";
while(1){
cin>>m;
if(m<1)
cout<<"error m,please retype again:";
else break;
}
lostp=curp->next;
begain:
for(;m>=1;--m){
if(m==1){
curp->next=lostp->next;
m=lostp->passwd;
cout<<"当次出列序号是:"<<lostp->i<<endl;
lostp=lostp->next;
n--;
if(n==1){
cout<<"当次出列序号是:"<<lostp->i<<endl;
exit(1);
}
goto begain;
}
else{
curp=curp->next;
lostp=lostp->next;
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -