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

    /*队列的顺序存储描述*/
    #define MaxSize    50
    typedef struct{
        int data[MaxSize];
        int front,rear;
    }SqQueue;

    一般判断队空还是队满的方法:  牺牲一个单元来区分队空和队满,入队时少用一个队列单元,这是一种普遍的做法约定

    队满条件

    (Q.rear +1) %MaxSize == Q.front

    队空条件

    Q.front == Q.rear

    队列中元素的个数

    (Q.rear - Q.front + MaxSize)% MaxSize

    循环队列的操作

    (1)初始化

    void InitQueue(SqQueue Q) {
        Q.rear = Q.front = 0;                 //初始化队首.队尾指针
    }

    (2)判断空

    bool isEmpty(SqQueue Q){
        if(Q.front == Q.rear)    return true;       //队空条件
        else    return false; 
    }

    (3)入队

    bool EnQueue(SqQueue &Q , int x){
        if( (Q.rear +1) %MaxSize == Q.front)    return false       //队满
         /*先把元素放入队列,再把rear指针往后移*/
        Q.data[rear]  = x;              
        Q.rear = (Q.rear +1) % MaxSize;
        return true;
    }

    (4)出队

    bool DeQueue(SqQueue &Q , int &x){
        if(Q.front == Q.rear )  return false;
        /*和入队类似,先把队首元素取出,再把front指针加一*/
        x = Q.data[front];
        Q.front = (Q.front+1) %MaxSize;
        return true;
    }
  • 相关阅读:
    php的session和cookie
    CRUD
    hibernate关系映射
    hibernate hql
    String和StringBuffer的区别
    策略模式Strategy
    项目结构
    final关键字
    项目中的建议
    struts学习记录
  • 原文地址:https://www.cnblogs.com/zhuxuan1997/p/10701093.html
Copyright © 2011-2022 走看看