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

📄 约瑟夫环.cpp

📁 1)创建任意字符型有序(递增排序)单循环链表(即链表的字符元素随机在键盘上输入)
💻 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 + -