zoukankan      html  css  js  c++  java
  • 队列的基本实现代码

    //队列的结构定义

    typedef int QElemType;

    typedef struct
    {
    QElemType data[MAXSIZE];
    int front;
    int rear;
    }SqQueue;


    //初始化一个空队列
    Status InitQueue(SqQueue *Q)
    {
    Q->front = 0;
    Q->rear = 0;
    return OK;
    }


    //返回Q的元素个数,也就是队列的当前长度

    int QueueLength(Squeue Q)
    {
    return ((Q.rear - Q.front + MAXSIZE)%MAXSIZE);

    }


    //若队列未满,则插入元素e为Q新的队尾元素
    Status EnQueue (SqQueue *Q,QElemType e)
    {
    if((Q->rear+1)%MAXSIZE == Q->front)
    return ERROR;
    Q->data[Q-rear] = e;
    Q->rear = (Q-rear+1)%MAXSIZE;

    return OK;
    }


    //若栈不空,则删除Q中对头元素,用e返回其值,并返回OK,否则返回ERROR
    Status DeQueue(SqQueue *Q,QElemType *e)
    {
    if(Q->front == Q-rear)
    return ERROR;
    *e = Q->data[Q->front];

    Q->front = (Q->front+1)%MAXSIZE;

    return OK;
    }

    //队列的链式存储结构

    typedef int QElemType;

    typedef struct QNode
    {
    QElemType data;
    struct QNode *next;
    }QNode,*QueuePtr;

    typedef struct
    {
    QueuePtr front,rear;
    }LinkQueue;


    //插入元素e为Q新的栈顶元素
    Status EnQueue(LinkQueue *Q,QElemType e)
    {
    QueuePtr s = (QueuePtr)malloc(sizeof(QNode));
    if(!s)
    exit(OVERFLOW);
    s->data = e;
    s->next = NULL;
    Q->rear->next = s;

    Q->rear = s;
    return OK;
    }

    //若栈不空,则删除Q中对头元素,用e返回其值,并返回OK,否则返回ERROR

    Status DeQueue(LinkQueue *Q,QElemType *e)
    {
    QueuePtr p;

    if(Q->front == Q->rear)
    return ERROR;

    p = Q->front->next;
    *e = p->data;
    Q->front->next = p->next;

    if(Q->rear == p)
    Q-rear = Q->front;
    free(p);

    return OK;
    }

  • 相关阅读:
    4.定时器
    LSTM分类层的理解
    对机器学习中end-to-end learning(端到端学习)的理解
    对非极大值限制(NMS)的理解
    ROI pooling
    softmax的理解
    长尾理论(long tail )的理解
    对双线性插值的理解
    RPN的理解
    卷积神经网络(CNN)和Faster-RCNN的理解
  • 原文地址:https://www.cnblogs.com/zxj-262410/p/6571978.html
Copyright © 2011-2022 走看看