标签:des size includes 数据 return -- lse type empty
typedef struct Queue
{
int * pBase;
int front;
int rear;
}QUEUE,*PQUEUE;
void init_queue(PQUEUE);//初始化
bool en_queue(PQUEUE,int);//入队
void traverse_queue(PQUEUE);//输出
bool empty(PQUEUE pQ);//判断队列是否为空
bool full_queue(PQUEUE pQ);//判断队列是否为满
bool dequeue(PQUEUE,int *);//出队
int main(void)
{
int val;//存放出队的临时值
QUEUE Q;
init_queue(&Q);//初始化
en_queue(&Q,1);//入队
en_queue(&Q,2);
en_queue(&Q,3);
en_queue(&Q,4);
en_queue(&Q,5);
traverse_queue(&Q);//输出
if(dequeue(&Q,&val))
{
printf("出队成功,出队的元素值为:%d\n",val);
}
else
{
printf("队列为空!\n");
}
return 0;
}
//出队
bool dequeue(PQUEUE pQ, int * pVal)
{
if(empty(pQ))
return false;
else
{
*pVal = pQ->pBase[pQ->front];
pQ->front = (pQ->front+1)%6;//front取余于队列长度,用来循环数组,
return true;
}
}
//输出
void traverse_queue(PQUEUE pQ)
{
if(empty(pQ))
{
printf("队列为空!\n");
}
else
{
int p = pQ->front;
while(p != pQ->rear)
{
printf("%d,", pQ->pBase[p]);
p = (p+1) % 6;
}
printf("\n");
}
return;
}
//判断队列是否为满,数组中设定一定不存放有效数据的元素,
//当入队时,在rear与front相邻时,队列为满
bool full_queue(PQUEUE pQ)
{
if(pQ->front == (pQ->rear+1)%6)//rear取余于队列长度,用来循环数组,
{
return true;
}
else
{
return false;
}
;
}
//判断队列是否为空
bool empty(PQUEUE pQ)
{
if(pQ->front == pQ->rear)
return true;
else
return false;
}
//入队
bool en_queue(PQUEUE pQ,int val)
{
if(full_queue(pQ))
{
return false;
}
else
{
pQ->pBase[pQ->rear] = val;
pQ->rear = (pQ->rear+1) % 6;//rear取余于队列长度,用来循环数组,
return true;
}
}
//初始化
void init_queue(PQUEUE pQ)
{
pQ->pBase = (int *)malloc(sizeof(int) * 6);//数组长度为6个元素
pQ->front = 0;
pQ->rear = 0;
return;
}
标签:des size includes 数据 return -- lse type empty
原文地址:https://www.cnblogs.com/jtpw/p/13549777.html