📄 约瑟夫(自己).txt
字号:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct Node
{
int number;
int mima;
struct Node * next;
}Node, *Linklist;
void ListInit(Linklist *L) // 初始化单链表
{
*L=(Linklist)malloc(sizeof(Node));
(*L)->next=*L;
}
void Insert(Linklist L, int e_mima, int e_number)
{
// Linklist p,q;
Node *p,*q;
p = (Linklist)malloc(sizeof(Node));
p->mima = e_mima;
p->number = e_number;
q = L;
while(q->next != L)q = q->next;
p->next = q->next;
q->next = p;
}
void Delete(Linklist L, int i)
{
// Linklist p,q;
Node *p,*q;
q = L;
while(q->next != q && q->next->number != i)
q = q->next;
if(q->next->number == i)
{
p = q->next;
q->next = p->next;
free(p);
}
}
void main()
{
// Linklist p,q,L;
Node *p,*q,*L;
int i,j,m,n,mima;
printf("请输入人数和初始密码:");
scanf("%d%d",&n,&m);
if(n<=0 || m<=0)return;
ListInit(&L);
i=1;
while(i<=n)
{
printf("请输入第 %d 个人的密码:",i);
scanf("%d",&mima);
if(mima <= 0)continue;
Insert(L, mima, i);
i++;
}
/*i = 1;
p = L->next;
while(L->next != L)
{
q = p;
p = p->next;
if(p ==L)
{
q = p;
p = p->next;
}
i++;
if(i == m)
{
printf("%d\t",p->number);
m = p->mima;
Delete(L, p->number);
p = q;
i = 0;
}
}*/
p = L->next;
for(i=1;i<=n;i++)
{
for(j=1;j<m;j++)
{
q=p;
p=p->next;
while(p==L)
{
q=p;
p=p->next;
}
}
printf("%d\t",p->number);
m=p->mima;
Delete(L, p->number);
p = q->next;
if(p==L)p=p->next;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -