队列的数组实现

来源:互联网 发布:qq斗地主游戏大厅mac 编辑:程序博客网 时间:2024/05/13 09:49

queue.h

#ifndef QUEUE_H_INCLUDED#define QUEUE_H_INCLUDEDtypedef  int  ElementType;struct  queuerecord;typedef  struct  queuerecord  *Queue;struct  queuerecord{    int  Capacity;    int  Front;    int  Rear;    int  Size;    ElementType  *Array;};Queue  CreatQueue(int maxelement);int  IsEmpty(Queue Q);int  IsFull(Queue  Q);void  Dispose(Queue  Q);void  MakeEmpty(Queue  Q);Queue  EnQueue(ElementType X,Queue  Q);Queue  DeQueue(Queue  Q);ElementType  Front(Queue Q);#endif // QUEUE_H_INCLUDED

queue.c

#include  <stdio.h>#include  <stdlib.h>#include  "queue.h"Queue  CreatQueue(int maxelement){    Queue Q=(Queue)malloc(sizeof(struct queuerecord));    if(Q==NULL)        printf("out of space");    Q->Array=(ElementType *)malloc(sizeof(ElementType));    if(Q->Array==NULL)        printf("Error:out of space!!!");    Q->Capacity =maxelement;    MakeEmpty(Q);    return  Q;}int  IsEmpty(Queue Q){    return  Q->Size==0;}int  IsFull(Queue  Q){    return  Q->Size ==Q->Capacity;}void  MakeEmpty(Queue  Q){    Q->Front=Q->Rear=0;    Q->Size=0;}Queue  EnQueue(ElementType X,Queue  Q){    if(!IsFull(Q))     {         Q->Array[Q->Rear++] =X;         Q->Size++;     }     else     {         printf("error: queue is full!");     }     return Q;}Queue  DeQueue(Queue  Q){    if(!IsEmpty(Q))    {        Q->Front++;        Q->Size--;    }    else        printf("error: queue is empty!!!");    return  Q;}ElementType  Front(Queue Q){    if(!IsEmpty(Q))        return  Q->Array[Q->Front];    else    {        printf("Error: queue  is empty!!!");        return 0;    }}
main.c

#include <stdio.h>#include <stdlib.h>#include  "queue.c"int main(){    Queue  Q=(Queue)malloc(sizeof(struct queuerecord));    int  c;    Q=CreatQueue(10);    while(!IsFull(Q))    {        c=getchar();        Q=EnQueue( c ,Q);    }    while(!IsEmpty(Q))    {        printf("%d\t", Front(Q));        Q=DeQueue(Q);    }    return 0;}



原创粉丝点击