循环队列的顺序存储实现

来源:互联网 发布:量子网络代替互联网 编辑:程序博客网 时间:2024/05/16 12:38
/*用数组实现队列的顺序存储*/#include <stdio.h>#define MaxSize 20#define ElementType int#define ERROR -1 struct QNode{    ElementType Data[MaxSize];    int front;    int rear;}; typedef struct QNode *Queue;//循环队列无法区分队列满和队列空/*解决方法:1.使用额外标记:Size或者Tag域2.仅使用n-1个数组空间 */ //这里使用第二种方法 void AddQ(Queue PtrQ,ElementType item){    if((PtrQ->rear+1)%MaxSize==PtrQ->front){        printf("Queue is full.");        return;    }    PtrQ->rear=(PtrQ->rear+1)%MaxSize;    PtrQ->Data[PtrQ->rear]=item;}ElementType DeleteQ(Queue PtrQ){    if(PtrQ->rear==PtrQ->front){        printf("Queue is empty.");        return ERROR;    }else{        PtrQ->front=(PtrQ->front+1)%MaxSize;        return PtrQ->Data[PtrQ->front];    } }  int main() {    return 0; }