天天看點

循環隊列 設定标志tag判斷隊列的滿和空狀态

#include <iostream>

#include<bits/stdc++.h>

using namespace std;

typedef struct{

int *data;

int front;

int rear;

int tag;

}qu;

void init(qu &q){

q.data=new int[3];

q.rear=q.front=0;

q.tag=0;

}

void enqueue(qu &q,int x){

if(q.tag==1&&(q.front==q.rear)) {

    cout<<"error1";

    exit(0);

}

q.data[q.rear]=x;

q.rear=(q.rear+1)%3;

if(q.tag==0) q.tag=1;

}

void dequeue(qu &q){

if(q.tag==0&&(q.front==q.rear)) {

     cout<<"error2";

    exit(0);

}

cout<<q.data[q.front]<<endl;

q.front=(q.front+1)%3;

if(q.tag==1) q.tag=0;

}

int main()

{

    qu q;

    init(q);

    enqueue(q,10);

    enqueue(q,20);

    enqueue(q,30);

    enqueue(q,40);

    enqueue(q,50);

    dequeue(q);

    dequeue(q);

    dequeue(q);

    dequeue(q);

    //cout << "Hello world!" << endl;

    return 0;

}

繼續閱讀