美文网首页
顺序队列

顺序队列

作者: qianranow | 来源:发表于2021-03-28 20:55 被阅读0次

#include <stdio.h>

#define MaxSize 10
typedef struct {
    int data[MaxSize];
    // front指向队头元素,rear指向队尾元素的后一个位置
    int front, rear;
} SqQueue;

void InitQueue(SqQueue *q) {
    q->rear=q->front=0;
}

/*
 *
 * 1. front指向队头元素,rear指向队尾元素的后一个位置
 * * 队满条件: (q.rear+1)%MaxSize == q.front
 * * 队空条件: rear == front
 * * 队列元素个数: (rear-front+MaxSize)%MaxSize
 * 2. 结构体中定义变量: int size = 0, 队列当前长度
 * * 插入成功: size++
 * * 删除成功: size--
 * 3. 结构体中定义变量: int tag = 0, 最近进行的是插入(1)/删除(0)
 * * 插入成功: tag = 1
 * * 删除成功: tag = 0
 * 4. front指向队头元素,rear指向队尾元素
 * * 初始化: rear=MaxSize-1, front=0
 */
int EnQueue(SqQueue *q, int e) {
    if ((q->rear+1)%MaxSize == q->front) return -1;
    q->data[q->rear] = e;
    q->rear = (q->rear+1)%MaxSize;
    return 1;
}

int DeQueue(SqQueue *q, int *e) {
    if (q->rear == q->front) return -1;
    *e = q->data[q->front];
    q->front = (q->front+1)%MaxSize;
    return 1;
}

int GetHead(SqQueue *q, int *e) {
    if (q->rear == q->front) return -1;
    *e = q->data[q->front];
    return 1;
}

int Length(SqQueue q) {
    return (q.rear-q.front+MaxSize)%MaxSize;
}

int Empty(SqQueue q) {
    if (q.rear == q.front) return 1;
    else return -1;
}

int main() {
    SqQueue q;
    InitQueue(&q);
    EnQueue(&q, 10);
    EnQueue(&q, 11);
    EnQueue(&q, 12);
    int e = -1;
    DeQueue(&q, &e);
    printf("%i\n", e);
    DeQueue(&q, &e);
    printf("%i\n", e);
    return 0;
}

相关文章

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

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

  • 0x07队列

    a、顺序队列 b、链式队列

  • 队列

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

  • Java数组实现循环队列

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

  • 顺序队列

    队列是一种受限的线性表,它是只在队首进行插入,且只能在队尾进行删除。队列具有先进先出的特性,广泛应用在树的层次遍历...

  • 顺序队列

  • 顺序队列

    01 队列的基本概念 队列是只允许在一端插入,另一端删除的线性表。 FIFO先进先出是队列的特性。 01 顺序队列...

  • 队列_顺序队列 & 链式队列

    队列 (Queue)队头出,队尾入操作集合:(1)QueueInitiate(Q) 初始化队列Q(2)Queu...

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

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

  • zookeeper 应用场景四、分布式队列

    分布式队列 利用zookeeper顺序节点特性,产生队列,如图,建立队列Queue,生产者创建顺序节点在Queue...

网友评论

      本文标题:顺序队列

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