zoukankan      html  css  js  c++  java
  • 循环队列队满条件

    队头指针在队尾指针的下一位置时,队满。 Q.front == (Q.rear + 1) % MAXSIZE 因为队头指针可能又重新从0位置开始,而此时队尾指针是MAXSIZE - 1,所以需要求余。
    当队头和队尾指针在同一位置时,队空。 Q.front == Q.rear;

     1 #include <stdio.h>
     2 #include <malloc.h>
     3 #define MAXSIZE 100  //最大队列长度
     4 #define OK 1
     5 #define ERROR 0
     6 typedef int ElemType;
     7 typedef int Status;
     8 
     9 typedef struct {
    10     ElemType *base;  //队列空间
    11     int front;   //队头指针
    12     int rear;       //队尾指针,若队尾不为空,则指向队尾元素的下一个位置
    13 }SqQueue;
    14 
    15 //初始化循环队列
    16 Status initQueue(SqQueue &Q) {
    17     Q.base = (ElemType *) malloc(MAXSIZE * sizeof(ElemType));  //申请空间
    18     Q.front = Q.rear = 0;       //队空
    19     return OK;
    20 }
    21 
    22 //入队
    23 Status enQueue(SqQueue &Q, ElemType e) {
    24     if ((Q.rear + 1) % MAXSIZE == Q.front) return ERROR; //队满,无法添加
    25     Q.base[Q.rear] = e;  //插入元素
    26     Q.rear =  (Q.rear + 1) % MAXSIZE; //队尾指针+1
    27     return OK;
    28 }
    29 
    30 //出队
    31 Status deQueue(SqQueue &Q, ElemType &e) {
    32     if (Q.front == Q.rear) return ERROR; //队空,无法删除
    33     e = Q.base[Q.front];
    34     Q.front = (Q.front + 1) % MAXSIZE;  //队头指针+1
    35     return OK;
    36 }
    37 
    38 //返回队列长度
    39 Status length(SqQueue &Q) {
    40     return (Q.rear - Q.front + MAXSIZE) % MAXSIZE; 
    41 }
    42 ————————————————
    43 版权声明:本文为CSDN博主「this.」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    44 原文链接:https://blog.csdn.net/u010429311/article/details/51043149
  • 相关阅读:
    调用 验证码
    始终居中的弹出层
    jq常用
    ThinkPHP redirect 方法
    session 的生成和删除
    1355:字符串匹配问题(strs)
    1348:【例49】城市公交网建设问题
    1357:车厢调度(train)
    1358:中缀表达式值(expr)
    1351:【例412】家谱树
  • 原文地址:https://www.cnblogs.com/hongdoudou/p/12544351.html
Copyright © 2011-2022 走看看