C++数据结构-队列的初始化及其插入删除操作

#include 
#define N 10
using namespace std;

//静态循环队列(用数组)
//用模%来实现队列的循环
//约定head指针指向实际头元素的位置
//约定rear指针指向实际尾元素的后一个位置
//约定当数组只剩一个空位是,默认此时数组已满(为了避免区别队满和队空的判断条件)

typedef struct
{
    int *datas;  //循环数组
    int rear;
    int head;
}Queue;

/****************初始化队列***********************/
void Initqueue(Queue &q)
{
    q.datas = new int[N];
    q.head = q.rear=0;
}

/****************队列的插入***********************/
void Insertqueue(Queue &q , int e)
{
    if((q.rear+1)%N==q.head)
    {
        cout<<"队列已满!!!"<<endl;//实际此时还有一个空位
        return;
    }else
    {
        q.datas[q.rear] = e;
        q.rear=(q.rear+1)%N;
    }
}

/****************队列的删除***********************/
void Deletequeue(Queue &q , int &e)
{
    if(q.rear==q.head)
    {
        cout<<"队列是空的!!!"<<endl;
        return;
    }else
    {
        e=q.datas[q.head];
        q.head=(q.head+1)%N;
    }
}
/****************队列的显示***********************/
void Showqueue(Queue &q)
{
    if(q.rear==q.head)
    {
        cout<<"队列是空的!!!"<<endl;
        return;
    }else
    {
        int i = q.head;
        while(i != q.rear)
        {
            cout<<q.datas[i]<<" "<<endl;
            i=(i+1)%N;
        }
    }
}

int main()
{
    Queue q;
    Initqueue(q);
    for(int i =0;i<N-1;i++)
        Insertqueue(q , i);
    Showqueue(q);
    return 0;
}

你可能感兴趣的:(数据结构)