美文网首页
队列的顺序存储实现

队列的顺序存储实现

作者: Sivin | 来源:发表于2018-04-07 22:44 被阅读51次

队列是和堆栈一样是一种特殊的线性表,和堆栈不一样的地方是是,堆栈是以后进先出的的数据组织方式,而队列则正好相反先进先出的组织方式.

队列又分为两种队列,一种是单向队列,一种是双向队列.
同时,单向队列又可以衍生出单向循环队列.

一般我们选用顺序存储来实现队列的时候,都是构造循环队列,这样可以提高内存空间的利用率.

下面我们来用数组实现一个单向循环队列.

#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE  9

typedef int ElementType;

struct QNode{
    ElementType data[MAX_SIZE];
    int front;
    int rear;
};

typedef struct QNode* Queue;



/**
 * 入队
 * @param ptrQ
 * @param e
 */
void AddQ(Queue ptrQ , ElementType e){
    //加1求余表示转了一周了,例如我们有9个元素,当我们的front=0的时候,我们的rear =8;
    //此时表示队列已经满了,我们不能再添加元素了,那么如何判断呢,我们知道(rear=8)+1等于9%9 = 0 = front;
    //同样当我们赚了一周之后,front = 3, rear = 2; 2+1 = 3 %9 = 3 = front ,因此这样是可以判断的
    if((ptrQ->rear+1)%MAX_SIZE == ptrQ->front){
        printf("队列已满\n");
        return;
    }
    ptrQ->rear = (ptrQ->rear+1) % MAX_SIZE;
    ptrQ->data[ptrQ->rear] = e;
}

/**
 * 出队
 * @param ptrQ
 * @param e
 * @return
 */
int deleteQ(Queue ptrQ,ElementType *e){
    if(ptrQ->rear == ptrQ->front){
        printf("队列已空\n");
        return -1;
    }else{
        *e = ptrQ->data[ptrQ->front];
        ptrQ->front = (ptrQ->front+1) % MAX_SIZE;
        return 0;
    }
}

相关文章

  • 数据结构之队列的链式存储结构

    之前写了队列的顺序存储结构,队列的定义及操作见 数据结构之队列的顺序存储结构 队列的链式存储结构与操作实现 队列接...

  • 【数据结构】【C#】008-队列:👬👬顺序队列(循环队列)

    C#数据结构:顺序队列 1、 顺序队列的假溢出现象 队列的一种顺序存储称为顺序队列。与顺序栈类似,在队列的顺序存储...

  • 队列的顺序存储实现

    队列是和堆栈一样是一种特殊的线性表,和堆栈不一样的地方是是,堆栈是以后进先出的的数据组织方式,而队列则正好相反先进...

  • C语言实现链式队列

    链式队列,简称"链队列",即使用链表实现的队列存储结构。链式队列的实现思想同顺序队列类似,只需创建两个指针(命名为...

  • 循环队列

    循环队列 队列的实现上我们更愿意用链式存储结构来存储。 一、队列的顺序存储结构 先按照应有的思路来考虑下如何构造队...

  • 队列

    顺序存储结构队列 循环队列 链队列

  • 005-数据结构和算法-链式队列

    上一章我们讨论了队列的顺序存储的实现,这一章我们换一种方式来实现队列 链式队列实现 我们再次强调,队列只是一种逻辑...

  • 队列之-链式实现

    一、队列的链式实现概述 队列本身就是一种特殊的线性表,所以跟线性表一样,可以使用顺序存储和链式存储两种方式,顺序存...

  • 《数据结构》第三章:栈和队列

    3.1.1栈的基本概念 3.1.2栈的顺序存储实现 3.1.3栈的链式存储实现 3.2.1队列的基本概念 3.2....

  • Java数组实现循环队列

    Java数组实现循环队列 上一节(Java实现队列——顺序队列、链式队列)我们使用数组实现了顺序队列,但是在tai...

网友评论

      本文标题:队列的顺序存储实现

      本文链接:https://www.haomeiwen.com/subject/sjyuhftx.html