Browse Source

APP_Framework/lib/:add queue lib

pull/9/head
chunyexixiaoyu 11 months ago
parent
commit
6f9be6d790
  1. 1
      APP_Framework/lib/Kconfig
  2. 3
      APP_Framework/lib/queue/Kconfig
  3. 10
      APP_Framework/lib/queue/SConscript
  4. 59
      APP_Framework/lib/queue/queue.c
  5. 26
      APP_Framework/lib/queue/queue.h

1
APP_Framework/lib/Kconfig

@ -11,4 +11,5 @@ menu "lib"
bool "app select other lib"
endchoice
source "$APP_DIR/lib/cJSON/Kconfig"
source "$APP_DIR/lib/queue/Kconfig"
endmenu

3
APP_Framework/lib/queue/Kconfig

@ -0,0 +1,3 @@
menuconfig LIB_USING_QUEUE
bool "USING QUEUE"
default n

10
APP_Framework/lib/queue/SConscript

@ -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')

59
APP_Framework/lib/queue/queue.c

@ -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;
}

26
APP_Framework/lib/queue/queue.h

@ -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…
Cancel
Save