데이터 구조 - 순환 대기 열 로 조세 프 문제 해결 (순수 c)
#ifndef __JOSEPHUS_H__
#define __JOSEPHUS_H__
#include
#include
#include
typedef int QElemType;
typedef struct{
QElemType *base; //
int front; // ,
int rear; // ,
}squeue;
void InitQueue(squeue *q);
int inqueue(squeue *q,int e,int max);
int dequeue(squeue *q,int max);
void DesQueue(squeue *q);
#endif
헤더 파일
#include "josephus.h"
//
void InitQueue(squeue *q){
q->base=(QElemType*)malloc(100*sizeof(QElemType));
if(!q->base)
exit(1);
q->front=q->rear=0;
}
//
int inqueue(squeue *q,int e,int max)
{
if((q->rear+1)%(max+1)==q->front)
return 1;
q->base[q->rear]=e; // rear
q->rear=(q->rear+1)%(max+1);
return 0;
}
//
int dequeue(squeue *q,int max)
{
int e;
if(q->front==q->rear)
{
exit(1);
}
e=q->base[q->front];
q->base[q->front]=0;
q->front=(q->front+1)%max;
return e;
}
//
void DesQueue(squeue *q)
{ if(q->base)
free(q->base);
q->base=NULL;
q->front=q->rear=0;
}
함수 체. c 파일
#include "josephus.h"
void main()
{
int n,i,m,count,d,x;
squeue q;
printf(" n:");
scanf("%d",&n);
InitQueue(&q);
printf(" :
");
for(i=1;i<=n;i++)
{
printf(" %d ",i);
scanf("%d",&d);
inqueue(&q,d,n);
}
printf(" m :");
scanf("%d",&m);
count=n;
while(count!=1)
{
i=1;
while(i!=m)
{
q.front=(q.front+1)%n;
if(q.base[q.front]!=0)
{
i++;
}
}
x=dequeue(&q,n);
while(q.base[q.front]==0)
{
q.front=(q.front+1)%n;
}
printf(" %d\t",x);
count--;
}
x=dequeue(&q,n);
printf(" %d\t",x);
}
주 함수
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.