约瑟夫环 (队列实现)

#include "stdio.h"
#include<stdlib.h>
#define MAXQSIZE 100
#define TRUE 1
#define OK 1
#define FALSE 0
#define OVERFLOW 0

typedef struct{
    int  *elem;   
int front;     //队头指针
int rear;      //队尾指针
}SeQueue;

void Init_SeQueue(SeQueue *sq)
{
    sq->elem = (int*)malloc(MAXQSIZE * sizeof(int));
	sq->front=sq->rear=0;
 }
int Empty_SeQueue(SeQueue *sq)
{
	return sq->front == sq->rear;
}
int In_SeQueue(SeQueue *sq, int x)
{
	if ((sq->rear+1)%MAXQSIZE == sq->front)
	{
		printf("队满");
		return 0;
	}
	sq->elem[sq->rear] = x;
	sq->rear = (sq->rear+1)%MAXQSIZE;
	return 1;
}
int  Out_SeQueue (SeQueue *sq, int *y)
{
	if (Empty_SeQueue(sq))
	{
		printf("队空");
		return 0;
	}
	*y = sq->elem[sq->front];
	sq->front = (sq->front+1)%MAXQSIZE;
	return 1;
}

main()
{
	SeQueue sq;
	int i,j,k,y,n,m,cnt=0;
	Init_SeQueue(&sq);
	scanf("%d%d",&n,&m);
	for (i=1; i<=n; i++)
	{
		In_SeQueue(&sq, i);
	}
	while(!Empty_SeQueue(&sq))
	{
		cnt++;
		if (cnt != m)
		{
			Out_SeQueue(&sq, &y);
			In_SeQueue(&sq, y);
		}
		else
		{
			Out_SeQueue(&sq, &y);
			printf("%d",y);
			cnt=0;
		}
	}
}

    原文作者:约瑟夫环问题
    原文地址: https://blog.csdn.net/qq_36238595/article/details/71603369
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞