当前位置:   article > 正文

C++实现循环队列的初始化、入队、出队、判空、判满、遍历基本操作_c++ 队列 入队报错

c++ 队列 入队报错

C++实现循环队列的初始化、入队、出队、判空、判满、遍历基本操作

队列:队尾进,队头出。

代码

#include <iostream>
#include <malloc.h>

using namespace std;
// 循环队列的实现
#define MAX_SIZE 9
typedef int ElemType;
// 定义结构体
typedef struct QueueNode{
    ElemType data[MAX_SIZE]; // 存数据
    int front, rear; // 头尾下标
} *Queue;
// 函数声明
Queue Init();
bool In(Queue &Q, ElemType e);
bool Out(Queue &Q, ElemType &e);
bool IsEmpty(Queue &Q);
bool IsFull(Queue &Q);
void Print(Queue &Q);
//初始化
Queue Init(){
    Queue ans = (Queue) malloc(sizeof(QueueNode));
    if (ans->data == NULL) return NULL;
    ans->front = ans->rear = 0;
    return ans;
}
//入队
bool In(Queue &Q, ElemType e){
    // 若已满
    if(IsFull(Q)) return false;
    Q->data[Q->rear] = e; // 先存入元素
    ++Q->rear %= MAX_SIZE; // 再将尾下标循环加1
    return true;
}
//出队
bool Out(Queue &Q, ElemType &e){
    if(IsEmpty(Q)) return false;
    e = Q->data[Q->front];
    ++Q->front %= MAX_SIZE;
    return true;
}
//判空
bool IsEmpty(Queue &Q){
    return Q->rear == Q->front;
}
//判满,留出1个空间表示队满状态
bool IsFull(Queue &Q){
    return (Q->rear + 1) % MAX_SIZE == Q->front;
}
// 打印
void Print(Queue &Q){
    printf("\n");
    // 计算元素总数
    int sum = (Q->rear + MAX_SIZE - Q->front) % MAX_SIZE;
    for(int cur = 0; cur < sum; cur++){
        printf("%d ", Q->data[(Q->front + cur) % MAX_SIZE]);
    }
    printf("\n");
}
int main()
{
    Queue Q = Init();
    ElemType e;
    if(Q == NULL) {
        printf("初始化失败");
        return 0;
    }
    else printf("初始化成功");
    for(int i = 0; i < 10; i++){
        In(Q, i);
    }
    Print(Q);
    for(int i = 0; i < 5; i++){
        if (!Out(Q, e)) printf("队列为空");
        else printf("出队:%d\n", e);
    }
    printf("当前元素:");
    Print(Q);
    for(int i = 0; i < 10; i++){
        if (!In(Q, i * 2)) {
            printf("队满\n");
            break;
        }
        else printf("入队:%d\n", i * 2);
    }
    printf("当前元素:");
    Print(Q);
    return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90

效果

在这里插入图片描述

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/706951?site
推荐阅读
相关标签
  

闽ICP备14008679号