순환 대기 열의 기본 동작
#include
#include
#define MAXSIZE 100
typedef char datatype;
typedef struct
{
datatype *base; //
int front; //
int rear; //
}Queue;
int judge = 0; // (0 ,1 )
Queue initQueue() //
{
Queue Q;
Q.base = (datatype *)malloc(sizeof(datatype) * MAXSIZE);
if (judge == 1)
{
printf(" !
");
free(Q.base);
return Q;
}
if (!Q.base)
{
printf(" !
");
return Q;
}
judge = 1;
Q.front = 0;
Q.rear = 0;
printf("
");
return Q;
}
Queue push_Queue(Queue Q) //
{
datatype data;
if (judge == 0)
{
printf(" !
");
return Q;
}
if ((Q.rear + 1) % MAXSIZE == Q.front)
{
printf(" , !
");
return Q;
}
printf(" :
");
scanf("%c", &data);
getchar();
Q.base[Q.rear] = data;
Q.rear = (Q.rear + 1) % MAXSIZE;
printf(" %c !
", data);
return Q;
}
Queue pop_Queue(Queue Q) //
{
datatype data;
if (judge == 0)
{
printf(" !
");
return Q;
}
if (Q.rear == Q.front)
{
printf(" , !
");
return Q;
}
data = Q.base[Q.front];
Q.front = (Q.front + 1) % MAXSIZE;
printf(" %c
", data);
return Q;
}
void show_Queue(Queue Q) // ( )
{
int i;
if (judge == 0)
{
printf(" !
");
return;
}
if (Q.rear == Q.front)
{
printf("
");
return ;
}
i = Q.front;
printf(" :
");
while (i != Q.rear)
{
printf("%c ", Q.base[i]);
i++;
}
}
void length_Queue(Queue Q)
{
int i, n = 0;
if (judge == 0)
{
printf(" !
");
return;
}
i = Q.front;
while (i != Q.rear)
{
i++;
n++;
}
printf(" %d
", n);
}
void destroy_Queue(Queue Q)
{
if (judge == 0)
{
printf(" !
");
return;
}
free(Q.base);
judge = 0;
printf(" !
");
}
void caidan() //
{
printf("
");
printf("**************************************************
");
printf("* 1----- *
");
printf("* 2----- *
");
printf("* 3----- *
");
printf("* 4----- *
");
printf("* 5----- *
");
printf("* 6----- *
");
printf("* 0----- *
");
printf("**************************************************
");
}
int main()
{
caidan();
while(1)
{
int ch;
Queue Q;
printf("
***************************************************
");
printf(" :");
scanf("%d",&ch);
getchar();
switch(ch)
{
case 1: //
{
Q = initQueue();
break;
}
case 2: //
{
Q = push_Queue(Q);
break;
}
case 3: //
{
Q = pop_Queue(Q);
break;
}
case 4: //
{
show_Queue(Q);
break;
}
case 5: //
{
length_Queue(Q);
break;
}
case 6: //
{
destroy_Queue(Q);
break;
}
case 0:
return 0;
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.