DataStructure_Queue


队列的基本操作:

队列的声明

#include "iostream"
using namespace std;
//队列的声明
#define Maxsize 10
typedef int Elemtype;
typedef struct{
    Elemtype data[Maxsize];     //用静态数组存放队列元素
    int front,rear;             //队头指针和队尾指针
    int size;

}SqQueue;

初始化队列

//初始化队列
void InitQueue(SqQueue &Q){
    Q.rear = Q.front = 0;
    Q.size = 0;
}

判断为空

//判断为空
bool QueueEmpty(SqQueue Q){
    if(Q.size==0)c++
        return true;
    else
        return false;
}

入队(队尾入队)

//入队
bool InQueue(SqQueue &Q,Elemtype x){
    if (Q.size == Maxsize){
        return false;
    }
    Q.data[Q.rear] = x;             //尾部插入数据
    Q.rear = (Q.rear+1)%Maxsize;    //队尾指针后移
    Q.size ++;
    return true;
}

出队

//出队
bool DeQueue(SqQueue &Q,Elemtype &x){
    if (Q.rear == Q.front){
        return false;
    }
    x = Q.data[Q.front];
    Q.front = (Q.front+1)%Maxsize;
    Q.size--;
    return true;
}

获取队头元素

//获取队头元素
bool GetHead(SqQueue Q,Elemtype &x){
    if (Q.size == 0)
        return false;
    x = Q.data[Q.front];
    return true;
}

打印队列

//打印队列
void PrintQueue(SqQueue Q){
    int tmp = Q.front;
    while (tmp!=Q.rear){
        cout<<Q.data[tmp]<<" ";
        tmp=(tmp+1)%Maxsize;
    }
}

全部代码

#include "iostream"
using namespace std;
//队列的声明
#define Maxsize 10
typedef int Elemtype;
typedef struct{
    Elemtype data[Maxsize];     //用静态数组存放队列元素
    int front,rear;             //队头指针和队尾指针
    int size;

}SqQueue;
//初始化队列
void InitQueue(SqQueue &Q){
    Q.rear = Q.front = 0;
    Q.size = 0;
}
//判断为空
bool QueueEmpty(SqQueue Q){
    if(Q.size==0)
        return true;
    else
        return false;
}
//入队
bool InQueue(SqQueue &Q,Elemtype x){
    if (Q.size == Maxsize){
        return false;
    }
    Q.data[Q.rear] = x;             //尾部插入数据
    Q.rear = (Q.rear+1)%Maxsize;    //队尾指针后移
    Q.size ++;
    return true;
}
//出队
bool DeQueue(SqQueue &Q,Elemtype &x){
    if (Q.rear == Q.front){
        return false;
    }
    x = Q.data[Q.front];
    Q.front = (Q.front+1)%Maxsize;
    Q.size--;
    return true;
}
//获取队头元素
bool GetHead(SqQueue Q,Elemtype &x){
    if (Q.size == 0)
        return false;
    x = Q.data[Q.front];
    return true;
}
//打印队列
void PrintQueue(SqQueue Q){
    int tmp = Q.front;
    while (tmp!=Q.rear){
        cout<<Q.data[tmp]<<" ";
        tmp=(tmp+1)%Maxsize;
    }
}
int main(){
    SqQueue Q;
    InitQueue(Q);
    for(int i=1;i<=5;i++){
        cout<<"插入队列数据第"<<i<<"个元素:"<<i<<endl;
        InQueue(Q,i);

    }
    PrintQueue(Q);
    cout<<endl;
    Elemtype head;
    GetHead(Q,head);
    cout<<"目前队列的队头元素是:"<<head<<";且只能允许出队"<<endl;
    int DeEle;
    DeQueue(Q,DeEle);
    cout<<"现在要删除队头元素是:"<<DeEle<<endl;
    cout<<"删除队头之后的队列是:"<<endl;
    PrintQueue(Q);
    cout<<endl;
    DeQueue(Q,DeEle);
    cout<<"现在要删除队头元素是:"<<DeEle<<endl;
    cout<<"删除队头之后的队列是:"<<endl;
    PrintQueue(Q);
    cout<<endl;
    int DeEle1;
    DeQueue(Q,DeEle1);
    cout<<"现在要删除队头元素是:"<<DeEle1<<endl;
    cout<<"删除队头之后的队列是:"<<endl;
    PrintQueue(Q);

}

执行结果

插入队列数据第1个元素:1
插入队列数据第2个元素:2
插入队列数据第3个元素:3
插入队列数据第4个元素:4
插入队列数据第5个元素:5
1 2 3 4 5
目前队列的队头元素是:1;且只能允许出队
现在要删除队头元素是:1
删除队头之后的队列是:
2 3 4 5
现在要删除队头元素是:2
删除队头之后的队列是:
3 4 5
现在要删除队头元素是:3
删除队头之后的队列是:
4 5

文章作者: SC
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 SC !
评论
  目录