forked from xuos/xiuos
5 changed files with 99 additions and 0 deletions
@ -0,0 +1,3 @@ |
|||
menuconfig LIB_USING_QUEUE |
|||
bool "USING QUEUE" |
|||
default n |
@ -0,0 +1,10 @@ |
|||
from building import * |
|||
import os |
|||
|
|||
cwd = GetCurrentDir() |
|||
|
|||
src = Glob('*.c') |
|||
|
|||
group = DefineGroup('queue', src, depend = ['LIB_USING_QUEUE'], CPPPATH = [cwd]) |
|||
|
|||
Return('group') |
@ -0,0 +1,59 @@ |
|||
#include <queue.h> |
|||
Status InitQueue(SqQueue *Q) |
|||
{ |
|||
Q->front=0; |
|||
Q->rear=0; |
|||
return OK; |
|||
} |
|||
|
|||
|
|||
Status ClearQueue(SqQueue *Q) |
|||
{ |
|||
Q->front=Q->rear=0; |
|||
return OK; |
|||
} |
|||
|
|||
|
|||
Status QueueEmpty(SqQueue *Q) |
|||
{ |
|||
if(Q->front==Q->rear) |
|||
return TRUE; |
|||
else |
|||
return FALSE; |
|||
} |
|||
|
|||
|
|||
int QueueLength(SqQueue *Q) |
|||
{ |
|||
return (Q->rear-Q->front+MAXSIZE)%MAXSIZE; |
|||
} |
|||
|
|||
|
|||
Status GetHead(SqQueue *Q,QElemType *e) |
|||
{ |
|||
if(Q->front==Q->rear) |
|||
return ERROR; |
|||
*e=Q->data[Q->front]; |
|||
return OK; |
|||
} |
|||
|
|||
|
|||
Status EnQueue(SqQueue *Q,QElemType e) |
|||
{ |
|||
if ((Q->rear+1)%MAXSIZE == Q->front) |
|||
return ERROR; |
|||
Q->data[Q->rear]=e; |
|||
Q->rear=(Q->rear+1)%MAXSIZE; |
|||
return OK; |
|||
} |
|||
|
|||
|
|||
Status DeQueue(SqQueue *Q,QElemType *e) |
|||
{ |
|||
if (Q->front == Q->rear) |
|||
return ERROR; |
|||
*e=Q->data[Q->front]; |
|||
Q->front=(Q->front+1)%MAXSIZE; |
|||
return OK; |
|||
} |
|||
|
@ -0,0 +1,26 @@ |
|||
#ifndef __QUEUE_H__ |
|||
#define __QUEUE_H__ |
|||
#include <stdio.h> |
|||
#define OK 1 |
|||
#define ERROR 0 |
|||
#define TRUE 1 |
|||
#define FALSE 0 |
|||
#define MAXSIZE 1024 |
|||
|
|||
typedef int Status; |
|||
typedef int QElemType; |
|||
typedef struct |
|||
{ |
|||
int data[MAXSIZE]; |
|||
int front; |
|||
int rear; |
|||
}SqQueue; |
|||
|
|||
Status InitQueue(SqQueue *Q); |
|||
Status ClearQueue(SqQueue *Q); |
|||
Status QueueEmpty(SqQueue *Q); |
|||
Status GetHead(SqQueue *Q,QElemType *e); |
|||
Status EnQueue(SqQueue *Q,QElemType e); |
|||
Status DeQueue(SqQueue *Q,QElemType *e); |
|||
int QueueLength(SqQueue *Q); |
|||
#endif |
Loading…
Reference in new issue