3.cpp
来自「3. 约瑟夫环问题。设编号为1,2,…,n(n>0)个人按顺时针方向围坐一」· C++ 代码 · 共 47 行
CPP
47 行
#include<iostream>
using namespace std;
#include<malloc.h>
typedef struct node
{
int data;
struct node *next;
}node;
void main()
{
int n,m,a[1000],i;
int biao;
struct node *head,*p,*q,*temp;
FILE *fp;
fp=fopen("input3.txt","r");
fscanf(fp,"%d%d",&n,&m);
fclose(fp);
for(i=0;i<n;i++)
{
a[i]=i+1;
}
head=(node *)malloc(sizeof(node));//建循环链表
head->next=NULL;
p=head;
for(i=0;i<n;i++)
{
q=(node *)malloc(sizeof(node));
q->data=a[i];
q->next=NULL;
p->next=q;
p=p->next;
}
p->next=head->next;
biao=n;
p=head;
while(biao>0)
{
for(i=1;i<m;i++)//找到要删除的前一个结点
{
p=p->next;
}
temp=p->next;//使temp指向要删除的那个结点
cout<<temp->data<<" ";//删除并读出结点值
p->next=temp->next;
biao--;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?