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

📄 2.cpp

📁 约瑟夫问题的C语言程序
💻 CPP
字号:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
typedef struct Lnode 
{ 
int num,code; 
struct Lnode *next; 
}Lnode;
void main() 
{ 
int i,j,key,n; /*i,j为记数器,key为输入的密码,n为人的总人数*/ 
Lnode *p,*s,*head; 
head=(Lnode *)malloc(sizeof(Lnode)); /*为头结点分配空间*/ 
p=head; 
printf("请输入总人数:");  
scanf("%d",&n); 
for(i=1;i<=n;i++) 
{ 
printf("第%d人",i); 
printf(" code: "); 
scanf("%d",&key); /*输入各个人的密码*/ 
s=p; 
p=(Lnode *)malloc(sizeof(Lnode)); /*创建新的结点*/ 
s->next=p; 
p->num=i; 
p->code=key; 
} 
p->next=head->next; 
p=head; 
head=head->next; 
free(p); 
p=head; 
do 
{ 
printf("\n人数%d Code:%d",p->num,p->code); /*输出链表*/ 
p=p->next; 
}while(p!=head); 
printf("\n请输入首密码 key:"); 
scanf("%d",&key); 
do 
{ 
j=1; /*j为记数数*/ 
p=head; 
while(j<key) 
{ 
s=p; 
p=p->next; 
j++; 
} 
i=p->num; 
key=p->code; 
printf("\n出列人号码:"); 
printf("第%d人",i); 
s->next=p->next; 
head=p->next; /*重新定义head,下次循环的开始结点*/ 
free(p); 
n--; /*每循环一次人是减1*/ 
}while(n>0); 
getch(); 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -