📄 约瑟夫环(函数版).cpp
字号:
#include"stdio.h"
typedef struct LNode{
int Num,Code;
struct LNode *next;
}LNode,*LinkList; //定义节点结构
void Initlist(LinkList &L, int &n, int &m);
void Outlist(LinkList,int,int);
void Initlist(LinkList &L, int &n, int &m) //数据初始化
{
LinkList p,s;
int num,password;
printf("请输入人的数目:");
scanf("%d",&n);
printf("请输入m的初始值:");
scanf("%d",&m);
L=new LNode;
p=L;
for(num=1;num<=n;num++) //循环单链表初始化
{
s=new LNode;
printf("请输入第%d个人的密码:",num);
scanf("%d",&password);
s->Code=password; //密码初始化
s->Num=num; //编号初始化
p->next=s;
p=s;
}
p->next=L->next;
p=L;
L=L->next;
}
void Outlist(LinkList L,int n,int m) //出列顺序
{
LinkList s,q;
int i,j;
s=L;
for(i=1;i<=n;i++)
{
for(j=1;j!=m;j++)s=s->next; //按m的值顺序报数
for(q=s;q->next!=s;q=q->next); //将当前指针移至前一节点
printf("第%d个出队为%d号\n",i,s->Num);
m=s->Code; //将密码Node值传给m
q->next=s->next;
s=q->next;
}
}
void main()
{
LinkList L;
int n,m;
Initlist(L,n,m);
Outlist(L,n,m);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -