zoukankan      html  css  js  c++  java
  • 队列(queue)

    一端插入一端删除的线性表,FIFO。

    循环队列:

    为保证队列不出现伪溢出,一般将其构造为循环队列。

    为方便判断队列是否已满,将队列满定义为还剩一个数组空间。

    队列满的条件:(rear+1)%QueueSize == front  (rear队尾, front队头)

    队列长度计算公式:(rear-front+QueueSize) % QueueSize

    指针后移:(front+1)%MAXSIZE。同时也实现了循环!

    #include <stdio.h>
    #include <stdbool.h>
    #include <stdlib.h>
    #define MAXSIZE 1000
    #pragma warning (disable:4996)
    
    typedef int QElemType;
    
    typedef struct {
        QElemType data[MAXSIZE];
        int front;
        int rear;
    }SqQueue;
    
    bool initQueue(SqQueue* Q) {
        Q->front = Q->rear = 0;
        return 1;
    }
    
    bool insertElem(SqQueue* Q, QElemType e) {
        if ((Q->rear + 1) % MAXSIZE == Q->front) {
            return 0;
        }
        Q->data[Q->rear] = e;
        Q->rear = (Q->rear + 1) % MAXSIZE;//循环队列里的指针后移!
        return 1;
    }
    
    bool deleteData(SqQueue* Q, QElemType* e) {
        if (Q->front == Q->rear) {
            return 0;
        }
        *e = Q->data[Q->front];
        Q->front = (Q->front + 1) % MAXSIZE;
        return 1;
    }

    链式队列:
    操作比较简单,同单链表。

  • 相关阅读:
    【poj1655】Balancing Act
    yargs.js用法
    8、typescript
    7、typescript
    6、typescript
    5、typescript
    4、typescript
    3、typescript
    2、typescript
    1、typescript
  • 原文地址:https://www.cnblogs.com/porest/p/14139233.html
Copyright © 2011-2022 走看看