📄 joseph.cpp
字号:
#include "stdafx.h"
#include <stdio.h>
#define N 7
struct NUM
{
int number;
int password;
struct NUM *next;
}num[N+1],*head;
void Initiate() //对链表初始化
{
head = &num[0]; //num[0]是头节点
num[0].number = N; //num[0].number记录未出列人数
num[0].next = &num[1];
for(int i=1;i<N;i++)
{
num[i].number = i;
printf("请输入第%d个人的密码:\t",i);
scanf("%d",&num[i].password );
num[i].next = &num[i+1];
}
num[N].number = N;
num[N].next = &num[1];
printf("请输入第%d个人的密码:\t",N);
scanf("%d",&num[N].password );
}
void Find_report(int m) //出列过程
{
struct NUM *p;
p = head;
while(num[0].number!=0)
{
for(int i=1;i<m;i++)//p指向出列的人的前一个人,则p->next指向要出列的人
p=p->next;
printf("%d ",p->next->number); //输出要出列的人的号码
m = p->next->password ; //记录新密码
p->next=p->next->next; //去除出列的人
num[0].number = num[0].number-1;//未出列人数减1
}
}
void main()
{
int m=20;
Initiate(); //对链表初始化
Find_report(m); //依次找出出列的人并输出
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -