循环队列出队与入队

循环队列的入队与出队

#include 

#define MaxSize 10

using namespace std;

typedef struct Node {
    int data[MaxSize];
    int front, rear; //队首,队尾指针
} SQueue;

SQueue *init_queue();

int En_queue(SQueue &qu, int x);

int De_queue(SQueue &qu, int &x);

int main() {

    auto SQ = new SQueue;
    SQ = init_queue();
    int data;
    for (int i = 0; i < 5; ++i) {
        cin >> data;
        En_queue(*SQ, data);
    }
    int x;
    De_queue(*SQ, x);
    cout<<x;

    return 0;
}

SQueue *init_queue() {
    auto SQ = new SQueue;
    SQ->front = 0;
    SQ->rear = SQ->front;
    return SQ;
};

int En_queue(SQueue &qu, int x) {
    if (qu.front == ((qu.rear + 1) % MaxSize))
        return 0;
    else {
        qu.data[qu.rear] = x;
        qu.rear = (qu.rear + 1) % MaxSize; //为了实现循环:例如当rear+1=MaxSize+2时,
        // 这样操作就可以是的盖度列的rear指向前面了;
        return 1;
    }
}

int De_queue(SQueue &qu, int &x) {
    if (qu.rear == qu.front)
        return 0;
    else {
        x = qu.data[qu.front];
        qu.front = (qu.front + 1) % MaxSize;
        return x;
    }
}

你可能感兴趣的:(C++,c++,开发语言,后端)