2.2 顺序队列 循环队列

2.2 顺序队列 循环队列_哔哩哔哩_bilibili

 

//顺序队列的实现 C++编译
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

#define MaxSize 5 //队列的容量

//顺序队列的类型定义
typedef struct{
    int data[MaxSize]; //静态数组
    int front,rear; //队头、队尾指针
}SqQueue;

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

//判断队列是否为空
bool QueueEmpty(SqQueue Q){
    return Q.rear==Q.front;
}

//判断队列是否已满
bool QueueFull(SqQueue Q){
    return Q.rear==MaxSize;
}

//入队
void EnQueue(SqQueue &Q, int e){
    if(QueueFull(Q)) return;
    Q.data[Q.rear]=e;
    Q.rear++;
}

//出队
void DeQueue(SqQueue &Q, int &e){
    if(QueueEmpty(Q)) return;
    e=Q.data[Q.front];
    Q.front++;
}

//读队头
int GetHead(SqQueue Q){
    if(!QueueEmpty(Q))
        return Q.data[Q.front];
}
int main(){
    SqQueue Q; //声明一个队列
    InitQueue(Q);
    int n=3; int a[]={5,2,0};
    for(int i=0;i<n;i++){
        EnQueue(Q,a[i]);
    }
    for(int i=0,e;i<n;i++){
        DeQueue(Q,e);
        printf("%d ",e);
    }
    return 0;
}

 

//循环队列的实现 C++编译
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

#define MaxSize 5 //队列容量

//顺序队列的类型定义
typedef struct{
    int data[MaxSize]; //静态数组
    int front,rear; //队头、队尾指针
}SqQueue;

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

//判断队列是否为空
bool QueueEmpty(SqQueue Q){
    return Q.rear==Q.front;
}

//判断队列是否已满
bool QueueFull(SqQueue Q){
    //牺牲一个单元,区分队空和队满
    return (Q.rear+1)%MaxSize==Q.front;
}

//入队
void EnQueue(SqQueue &Q, int e){
    if(QueueFull(Q)) return;
    Q.data[Q.rear]=e;
    Q.rear=(Q.rear+1)%MaxSize;
}

//出队
void DeQueue(SqQueue &Q, int &e){
    if(QueueEmpty(Q)) return;
    e=Q.data[Q.front];
    Q.front=(Q.front+1)%MaxSize;
}

//读队头
int GetHead(SqQueue Q){
    if(!QueueEmpty(Q))
        return Q.data[Q.front];
}
int main(){
    SqQueue Q; //声明一个队列
    InitQueue(Q);
    int n=3; int a[]={5,2,0};
    for(int i=0;i<n;i++){
        EnQueue(Q,a[i]);
    }
    for(int i=0,e;i<n;i++){
        DeQueue(Q,e);
        printf("%d ",e);
    }
    return 0;
}
 

 

//循环队列的实现2 C++编译
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

#define MaxSize 5 //队列容量

//顺序队列的类型定义
typedef struct{
    int data[MaxSize]; //静态数组
    int front,rear; //队头、队尾指针
    int size; //队列元素个数
}SqQueue;

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

//判断队列是否为空
bool QueueEmpty(SqQueue Q){
    return Q.size==0;
}

//判断队列是否已满
bool QueueFull(SqQueue Q){
    return Q.size==MaxSize;
}

//入队
void EnQueue(SqQueue &Q, int e){
    if(QueueFull(Q)) return; //若队满
    Q.data[Q.rear]=e;
    Q.rear=(Q.rear+1)%MaxSize;
    Q.size++;
}

//出队
void DeQueue(SqQueue &Q, int &e){
    if(QueueEmpty(Q)) return;
    e=Q.data[Q.front];
    Q.front=(Q.front+1)%MaxSize;
    Q.size--;
}

//读队头
int GetHead(SqQueue Q){
    if(!QueueEmpty(Q))
        return Q.data[Q.front];
}
int main(){
    SqQueue Q; //声明一个队列
    InitQueue(Q);
    int n=3; int a[]={5,2,0};
    for(int i=0;i<n;i++){
        EnQueue(Q,a[i]);
    }
    for(int i=0,e;i<n;i++){
        DeQueue(Q,e);
        printf("%d ",e);
    }
    return 0;
}
 

 

//循环队列的实现(rear指向队尾元素) C++编译
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

#define MaxSize 5 //元素的最大个数

//顺序队列的类型定义
typedef struct{
    int data[MaxSize]; //静态数组
    int front,rear; //队头、队尾指针
}SqQueue;

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

//判断队列是否为空
bool QueueEmpty(SqQueue Q){
    return (Q.rear+1)%MaxSize==Q.front;
}

//判断队列是否已满
bool QueueFull(SqQueue Q){
    //牺牲一个单元,区分队空和队满
    return (Q.rear+2)%MaxSize==Q.front;
}

//入队
void EnQueue(SqQueue &Q, int e){
    if(QueueFull(Q)) return;
    Q.rear=(Q.rear+1)%MaxSize;
    Q.data[Q.rear]=e; //rear指向队尾元素
}

//出队
void DeQueue(SqQueue &Q, int &e){
    if(QueueEmpty(Q)) return;
    e=Q.data[Q.front];
    Q.front=(Q.front+1)%MaxSize;
}

//读队头
int GetHead(SqQueue Q){
    if(!QueueEmpty(Q))
        return Q.data[Q.front];
}
int main(){
    SqQueue Q; //声明一个队列
    InitQueue(Q);
    int n=3; int a[]={5,2,0};
    for(int i=0;i<n;i++){
        EnQueue(Q,a[i]);
    }
    for(int i=0,e;i<n;i++){
        DeQueue(Q,e);
        printf("%d ",e);
    }
    return 0;
}
 

 

 

.

posted @ 2026-09-12 07:52  董晓  阅读(17)  评论(0)    收藏  举报