데이터 구조 C 언어 구현 순환 대기 열
4064 단어 데이터 구조
#include
#include
//
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
//
#define QUEUESIZE 20
//
typedef int ElemType ;
//
typedef int State;
//
typedef struct _CircleQueue
{
ElemType data[QUEUESIZE];//
int front;//
int rear;//
int count;//
}CircleQueue;
/*************************************************
Function: InitQueue
Description: ,
Input: CircleQueue *queue
Output:
Return: OK
Others: queue->front = queue->rear = 0
*************************************************/
State InitQueue(CircleQueue *queue)
{
queue->front = queue->rear = 0;
queue->count = 0;
return OK;
}
//
//1、 count, ,front rear
//2、 , :(rear+1)%QUEUESIZE=front, front=rear
//rear , ; (rear-front+QUEUESIZE)%QUEUESIZE
/*************************************************
Function: IsQueueEmpty
Description:
Input: CircleQueue *queue
Output:
Return: TRUE, FALSE
Others:
*************************************************/
State IsQueueEmpty(CircleQueue *queue)
{
if(queue->count == 0)
return TRUE;
else
return FALSE;
}
/*************************************************
Function: IsQueueFull
Description:
Input: CircleQueue *queue
Output:
Return: TRUE, FALSE
Others:
*************************************************/
State IsQueueFull(CircleQueue *queue)
{
if(queue->count == QUEUESIZE)
return TRUE;
else
return FALSE;
}
/*************************************************
Function: EnQueue
Description:
Input: CircleQueue *queue
ElemType e
Output:
Return: OK, ERROR
Others:
*************************************************/
State EnQueue(CircleQueue *queue, ElemType e)
{
//
if(queue->count == QUEUESIZE)
{
printf("The queue is full");
return ERROR;
}
//
queue->data[queue->rear] = e;
//
queue->rear = (queue->rear + 1) % QUEUESIZE;
//
queue->count++;
return OK;
}
/*************************************************
Function: DeQueue
Description:
Input: CircleQueue *queue
Output:
Return: ,
Others:
*************************************************/
ElemType DeQueue(CircleQueue *queue)
{
//
if(queue->count == 0)
{
printf("The queue is empty!");
exit(EXIT_FAILURE);
}
//
ElemType e = queue->data[queue->front];
//
queue->front = (queue->front + 1) % QUEUESIZE;
//
queue->count--;
return e;
}
/*************************************************
Function: GetHead
Description:
Input: CircleQueue *queue
Output:
Return: ,
Others:
*************************************************/
ElemType GetHead(CircleQueue *queue)
{
//
if(queue->count == 0)
{
printf("The queue is empty!");
exit(EXIT_FAILURE);
}
return queue->data[queue->front];
}
/*************************************************
Function: ClearQueue
Description:
Input: CircleQueue *queue
Output:
Return: OK
Others:
*************************************************/
State ClearQueue(CircleQueue *queue )
{
queue->front = queue->rear = 0;
queue->count = 0;
return OK;
}
/*************************************************
Function: GetLength
Description:
Input: CircleQueue *queue
Output:
Return:
Others:
*************************************************/
int GetLength(CircleQueue *queue)
{
return queue->count;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.