队列的顺序存储

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/matafeiyanll/article/details/102756794

队列的顺序存储

源代码

#include<stdbool.h>
#include <stdio.h>
#include<stdlib.h>
#define MAXQUEUE 10

typedef struct queue{
    int front,rear;
    int Queueentry[MAXQUEUE];
    int c;
}Queue;
//队初始化
bool Queue_Init(Queue* l){
    l->front=-1;
    l->rear=-1;
    l->c=0;
    return true;
}
//判断队空
bool Queue_Empty(Queue* l){
    bool flag=false;
    if(l->c==0)
        flag=true;
    return flag;
}
//判断队满
bool Queue_Full(Queue* l){
    bool flag=false;
    if(l->c==MAXQUEUE)
        flag=true;
    return flag;
}
//入队
bool Queue_Push(Queue* l,int ele){
    bool flag=false;
    if(!Queue_Full(l)){
        l->front=(l->front+1)%MAXQUEUE;
        l->Queueentry[l->front]=ele;
        l->c++;
        flag=true;
    }
    return flag;
}
//出队
bool Queue_Pop(Queue* l,int* ele){
    bool flag=false;
    if(!Queue_Empty(l)){
        l->rear=(l->rear+1)%MAXQUEUE;
        *ele=l->Queueentry[l->rear];
        l->c--;
        flag=true;
    }
    return flag;
}
//打印队列
bool Queue_print(Queue* l){
    bool flag=false;
    int i;//计数器
    if(!Queue_Empty(l)){
    for(i=(l->rear+1)%MAXQUEUE;i!=(l->front);i=(i+1)%MAXQUEUE)
            printf("%d ",l->Queueentry[i]);
        printf("%d ",l->front);
        flag=true;
    }
    return flag;
}
//调试函数
int main(int argc, const char * argv[]) {
    printf("Hello, World!\n");
    Queue q;
    bool flag;
    int j;
    flag=Queue_Init(&q);
    for(int i=0;i<=13;i++)
        flag=Queue_Push(&q, i);
    flag=Queue_print(&q);
    printf("\n");
    flag=Queue_Pop(&q, &j);
    printf("%d",j);
    printf("\n");
    flag=Queue_print(&q);
    printf("\n");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/matafeiyanll/article/details/102756794