队列

少用一个元素空间:

#include <stdio.h>
#include <stdlib.h>

#define ERROR 0

typedef struct QNode *PtrToQNode;
typedef int ElementType;
typedef int Position;

struct QNode{
    ElementType *Data;
    Position Front,Rear;
    int Maxsize;
};

typedef PtrToQNode Queue;

Queue CreatQueue(int maxsize){
    Queue Q = (Queue)malloc(sizeof(struct QNode));
    Q->Data = (ElementType*)malloc(maxsize*sizeof(ElementType));
    Q->Front = Q->Rear = 0;
    Q->Maxsize = maxsize;
    return Q;
}
bool IsFull(Queue Q){
    return ( (Q->Rear+1) %Q->Maxsize == Q->Front );
}

bool AddQ(Queue Q,ElementType x){
    if(IsFull(Q)){
    
        printf("队列满");
        return false;
    }
    else{
        Q->Rear = (Q->Rear+1)%Q->Maxsize;
        Q->Data[Q->Rear] =x;
        printf("加入队列完成:%d\n",x);
        return true;
        
    }
}
bool IsEmpty(Queue Q){

    return (Q->Front == Q->Rear);
}

ElementType DeleteQ(Queue Q){
    if(IsEmpty(Q)){
        printf("队列空");
        return ERROR;
    }
    else
    {
        Q->Front = (Q->Front+1)%Q->Maxsize;
        printf("移除队列完成:%d\n",Q->Data[Q->Front]);
        
        return Q->Data[Q->Front];
    
    
    }
}

int main(){
    PtrToQNode Q;
    Q = CreatQueue(5);
    AddQ(Q,1);
    AddQ(Q,2);
    AddQ(Q,3);
    AddQ(Q,4);
    AddQ(Q,5);
    printf("==========\n");
    DeleteQ(Q);
    AddQ(Q,6);
    return 0;

}

 

posted @ 2019-08-08 14:26  蘑菇西餐  阅读(188)  评论(0编辑  收藏  举报