顺序队列(操作)

一、顺序队列的初始化


//顺序队列的初始化
#include
#include     //malloc、free函数的头文件
#define MaxSize 10     //定义队列中元素的最大个数
typedef struct{
    int data[MaxSize];   //静态数组存放队列元素
    int front,rear;      //队头指针和队尾指针
} SqQueue;

//初始化队列
void InitQueue(SqQueue &Q){
    Q.rear=Q.front=0;  //初始化时,队头队尾指针指向0
    return;
}

int main(){
    SqQueue Q;  //声明一个顺序队列
    InitQueue(Q);  //初始化队列
    return 0;
}


二、顺序队列的判空


//顺序队列的判空
#include
#include     //malloc、free函数的头文件
#define MaxSize 10     //定义队列中元素的最大个数
typedef struct{
    int data[MaxSize];   //静态数组存放队列元素
    int front,rear;      //队头指针和队尾指针
} SqQueue;

//初始化队列
void InitQueue(SqQueue &Q){
    Q.rear=Q.front=0;  //初始化时,队头队尾指针指向0
    return;
}

//判断队列是否为空
bool QueueEmpty(SqQueue Q){
    if(Q.rear==Q.front) return true;  //队空条件
    else return false;
}

int main(){
    SqQueue Q;  //声明一个顺序队列
    InitQueue(Q);  //初始化队列
    QueueEmpty(Q);   //判空
    return 0;
}


三、顺序队列入队


//顺序队列入队
#include
#include     //malloc、free函数的头文件
#define MaxSize 10     //定义队列中元素的最大个数
typedef struct{
    int data[MaxSize];   //静态数组存放队列元素
    int front,rear;      //队头指针和队尾指针
} SqQueue;

//初始化队列
void InitQueue(SqQueue &Q){
    Q.rear=Q.front=0;  //初始化时,队头队尾指针指向0
    return;
}

//入队
bool EnQueue(SqQueue &Q,int x){
    if((Q.rear+1)%MaxSize==Q.front) return false; //队满报错
    Q.data[Q.rear]=x;  //新元素插入队尾
    Q.rear=(Q.rear+1)%MaxSize;  //队尾指针加1取模
    return true;
}

int main(){
    SqQueue Q;  //声明一个顺序队列
    InitQueue(Q);  //初始化队列
    EnQueue(Q,11);  //入队
    EnQueue(Q,22);
    EnQueue(Q,33);
    //打印
    printf("%d\n",Q.data[0]);
    printf("%d\n",Q.data[1]);
    printf("%d\n",Q.data[2]);
    return 0;
}


四、顺序队列出队


//顺序队列出队
#include
#include     //malloc、free函数的头文件
#define MaxSize 10     //定义队列中元素的最大个数
typedef struct{
    int data[MaxSize];   //静态数组存放队列元素
    int front,rear;      //队头指针和队尾指针
} SqQueue;

//初始化队列
void InitQueue(SqQueue &Q){
    Q.rear=Q.front=0;  //初始化时,队头队尾指针指向0
    return;
}

//入队
bool EnQueue(SqQueue &Q,int x){
    if((Q.rear+1)%MaxSize==Q.front) return false; //队满报错
    Q.data[Q.rear]=x;  //新元素插入队尾
    Q.rear=(Q.rear+1)%MaxSize;  //队尾指针加1取模
    return true;
}

//出队
bool DeQueue(SqQueue &Q,int &x){
    if(Q.rear==Q.front) return false;  //队空则报错
    x=Q.data[Q.front];
    Q.front=(Q.front+1)%MaxSize;
    return true;
}

int main(){
    SqQueue Q;  //声明一个顺序队列
    InitQueue(Q);  //初始化队列
    EnQueue(Q,11);  //入队
    EnQueue(Q,22);
    EnQueue(Q,33);
    EnQueue(Q,44);
    int x=0;
    DeQueue(Q,x);  //出队
    printf("x=%d\n",x);
    //打印
    printf("%d\n",Q.data[Q.front]);
    printf("%d\n",Q.data[Q.front+1]);
    printf("%d\n",Q.data[Q.front+2]);
    return 0;
}


五、顺序队列获得队头元素的值


//顺序队列获得队头元素的值
#include
#include     //malloc、free函数的头文件
#define MaxSize 10     //定义队列中元素的最大个数
typedef struct{
    int data[MaxSize];   //静态数组存放队列元素
    int front,rear;      //队头指针和队尾指针
} SqQueue;

//初始化队列
void InitQueue(SqQueue &Q){
    Q.rear=Q.front=0;  //初始化时,队头队尾指针指向0
    return;
}

//入队
bool EnQueue(SqQueue &Q,int x){
    if((Q.rear+1)%MaxSize==Q.front) return false; //队满报错
    Q.data[Q.rear]=x;  //新元素插入队尾
    Q.rear=(Q.rear+1)%MaxSize;  //队尾指针加1取模
    return true;
}

//获得队头元素的值
bool GetHead(SqQueue Q,int &x){
    if(Q.rear==Q.front) return false;  //队空则报错
    x=Q.data[Q.front];
    return true;
}

int main(){
    SqQueue Q;  //声明一个顺序队列
    InitQueue(Q);  //初始化队列
    EnQueue(Q,11);  //入队
    EnQueue(Q,22);
    EnQueue(Q,33);
    int x=0;
    GetHead(Q,x);    //获得队头元素的值
    //打印
    printf("%d\n",x);
    return 0;
}


六、顺序队列元素个数


//顺序队列元素个数
#include
#include     //malloc、free函数的头文件
#define MaxSize 10     //定义队列中元素的最大个数
typedef struct{
    int data[MaxSize];   //静态数组存放队列元素
    int front,rear;      //队头指针和队尾指针
} SqQueue;

//初始化队列
void InitQueue(SqQueue &Q){
    Q.rear=Q.front=0;  //初始化时,队头队尾指针指向0
    return;
}

//入队
bool EnQueue(SqQueue &Q,int x){
    if((Q.rear+1)%MaxSize==Q.front) return false; //队满报错
    Q.data[Q.rear]=x;  //新元素插入队尾
    Q.rear=(Q.rear+1)%MaxSize;  //队尾指针加1取模
    return true;
}

//队列元素个数
bool QueueLen(SqQueue Q,int &x){
    x=(Q.rear+MaxSize-Q.front)%MaxSize;  //队列元素个数
    return true;
}

int main(){
    SqQueue Q;  //声明一个顺序队列
    InitQueue(Q);  //初始化队列
    EnQueue(Q,11);  //入队
    EnQueue(Q,22);
    EnQueue(Q,33);
    int x=0;
    QueueLen(Q,x);  //获取队列元素个数
    //打印
    printf("%d\n",x);
    return 0;
}


七、其他情况


顺序队列(操作)_第1张图片

顺序队列(操作)_第2张图片

顺序队列(操作)_第3张图片

顺序队列(操作)_第4张图片 


 

 

你可能感兴趣的:(数据结构,数据结构,c++,c语言)