队列--顺序存储

/**
 * 队列--顺序存储
 **/

#include <stdlib.h>
#include <iostream.h>

#define OK 1
#define ERROR 0
//队列的最大数据元素数目
#define MAX_QUEUE 10         
           
typedef struct queue{                 
    //假设当数组只剩下一个单元时认为队满
    int item[MAX_QUEUE];   
    //存放队列中数据元素的存储单元
    int front,rear; //队头指针、队尾指针
}QUEUE;

//初始化队列Q    
void InitQueue(QUEUE *Q)
{
    Q->front=-1;
    Q->rear=-1;
}

//入队    
void EnQueue(QUEUE *Q,int item)
{
    if ((Q->rear+1)%MAX_QUEUE==Q->front) exit(0);
    else 
    {  
        Q->rear=(Q->rear+1)%MAX_QUEUE;
        Q->item[Q->rear]=item;    
    }
}

//判断队列Q是否为空 
int QueueEmpty(QUEUE Q)
{
    if (Q.front==Q.rear) return 1;
    else return 0;
}

//获取队头元素内容   
void  GetFront(QUEUE Q,int *item) 
{
    if (QueueEmpty(Q)) exit(0);
    else *item=Q.item[(Q.front+1)%MAX_QUEUE];
}

//出队  
void DeQueue(QUEUE*Q,int *item)
{
    if (QueueEmpty(*Q)) exit(0);
    else
    {
        Q->front=(Q->front+1)%MAX_QUEUE;
        *item=Q->item[Q->front];
    }
}

 

posted @ 2013-02-23 17:57  何长春  阅读(195)  评论(0编辑  收藏  举报