yuesefu.cpp

来自「约瑟夫环的c语言实现」· C++ 代码 · 共 48 行

CPP
48
字号
//约瑟夫环,利用循环链表,按题目所述方法操作
#include <stdio.h>
#include <stdlib.h>

#define N 10

typedef struct node
{
	int num,NO;
	struct node *next;
}Node,*pNode;

void main()
{
	//初始化循环链表
	int i,m;
	pNode head,p,q;
	printf("%d个人的数字为:\n",N);
	p=head=(pNode)malloc(sizeof(Node));
	if(!p) printf("malloc failed!\n");
	p->num=rand()+100;
	p->NO=1;
	printf("%d:%d\t",p->NO,p->num);
	for(i=1;i<N;i++)
	{
		p->next=(pNode)malloc(sizeof(Node));
		if(!p) printf("malloc failed!\n");
		p=p->next;
		p->num=rand()+100;
		p->NO=i+1;
		printf("%d:%d\t",p->NO,p->num);
	}
	p->next=head;
	m=rand()+100;
	printf("\n");
	//开始报数
	p=head;
	while(p->next!=p)
	{
		for(i=1;i<(m % N);i++) {q=p;p=p->next;}
		q->next=p->next;
		printf("%d号出列\n",p->NO);
		free(p);
		p=q->next;
	}
	printf("%d号出列\n",p->NO);
	free(p);
}

⌨️ 快捷键说明

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