📄 约瑟夫环.cpp
字号:
#include<iostream.h>
#include<stdio.h>
typedef struct huan //定义结构体
{
int num,pw; //num为号码,pw为密码
struct huan *next; //指向下一个结点
}*psp,sp;
int main()
{
int m,n,i,j;
psp head,rear,pt,pt2,p;
head=new sp; //声明一个结点(head为头结点)
rear=head;
cout<<" ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";
cout<<" ┃ 实习1.2 约瑟夫环 ┃\n";
cout<<" ┃ 设计者:林庆达 ┃\n";
cout<<" ┃ 班 级: 计算机(7)班 ┃\n";
cout<<" ┃ 学 号: 80号 ┃\n";
cout<<" ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";
cout<<"\n请输入报数的人的个数n:"; //输入报数人数
cin>>n;
cout<<"请输入m的第一个值:"; //输入初始密码
cin>>m;
pt=head;
for(i=1;i<n;i++) //申请剩下的n-1个人结点
{
pt2=new sp;
pt->next=pt2;
pt=pt2;
rear=pt2;
}
rear->next=head; //建立循环链表
pt=head;
for(i=1;i<=n;i++) //输入n个人的数据
{
cout<<"输入第"<<i<<"个密码:"<<endl;
cin>>j;
pt->pw=j;
pt->num=i;
pt=pt->next; //指向下一个结点
}
pt2=pt=rear;
for(j=1;j<=n;j++) //循环n次,依次出列
{
for(i=1;i<=m;i++) //计算下一个出列的人
{
pt2=pt;
pt=pt->next;
}
p=pt2->next; //打印出列者的数据,并删除结点
cout<<"出列的人的序号:" <<p->num<<" 其密码为:"<<p->pw<<endl;
m=p->pw;
pt2->next=p->next;
delete(p);
pt=pt2;
}
getchar();
return 0; //程序结束
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -