美文网首页
循环队列的实现方法1

循环队列的实现方法1

作者: 客昂康 | 来源:发表于2019-02-14 10:40 被阅读23565次

设:
队列长度是QUEUE_LENGTH
队列数组是queue[QUEUE_LENGTH]
队列头索引是head
队列尾索引是tail
队列已有元素个数是number

入队:
queue[tail] = 元素;
tail = (tail + 1) % QUEUE_LENGTH;
number += 1;

出队:
元素 = queue[head];
head = (head + 1) % QUEUE_LENGTH;
number -= 1;

判断队列空:
if(number == 0){...}

判断队列满:
if(number >= QUEUE_LENGTH){...}

举例:

#include <stdio.h>
#include <string.h>

#define QUEUE_LENGTH 16

typedef struct {
  unsigned char *data;
  unsigned int   size;
} SOUND_T;

typedef struct {
  SOUND_T  array[QUEUE_LENGTH];
  unsigned head;
  unsigned tail;
  unsigned number;
} QUEUE_T;

//循环队列初始化
void queue_init(QUEUE_T *queue){
  memset(queue, 0, sizeof(QUEUE_T));
}

//判断队列是否空
unsigned queue_isEmpty(QUEUE_T *queue){
  return queue->number == 0 ? 1 : 0;
}

//判断队列是否满
unsigned queue_isFull(QUEUE_T *queue){
  return queue->number >= QUEUE_LENGTH ? 1 : 0;
}

//获取队列已有成员数
unsigned queue_getNumber(QUEUE_T *queue){
  return queue->number;
}

//入队
void queue_put(QUEUE_T *queue, SOUND_T *sound){
  queue->array[queue->tail] = *sound;
  queue->tail = (queue->tail + 1) % QUEUE_LENGTH;
  queue->number += 1;
}

//出队
void queue_get(QUEUE_T *queue, SOUND_T *sound){
  *sound = queue->array[queue->head];
  queue->head = (queue->head + 1) % QUEUE_LENGTH;
  queue->number -= 1;
}

记于 2019-02-14

相关文章

  • (3)Go实现循环队列

    队列的实现方法2,循环队列 顺序队列取出元素的时间复杂度为O(n),循环队列取出元素的时间复杂度为O(1),相对快...

  • 循环队列的实现方法1

    设:队列长度是QUEUE_LENGTH队列数组是queue[QUEUE_LENGTH]队列头索引是head队列尾索...

  • 队列表示与操作实现

    一、顺序队列表示与操作实现1.1 定义常量及结构 1.2 循环队列方法实现 二、链队列表示与操作实现2.1 定义常...

  • 数据结构——队列

    目录 1、什么是队列 2、队列的实现 2.1、基于简单循环数组的实现 2.1.1、为什么需要循环数组 2.1.2、...

  • 有关“队列”的总结

    队列 定义 分类 链式队列 (用链表实现) 静态队列 (用数组实现)图静态队列通常都必须是循环队列循环队列的讲解:...

  • 1.数组队列

    数组实现单队列 数组实现循环队列

  • 数据结构与算法之队列(五)

    目录 队列简介队列的接口设计用栈实现队列双端队列实现循环队列实现循环双端队列 一 简介 队列是一种特殊的线性表,只...

  • 数据结构 - 循环队列

    单向循环队列 可以使用数组来实现队列,并且各项接口也可以优化到 O(1) 的时间复杂度--这就是循环队列 循环双端...

  • python-数据结构 循环队列的实现 设计循环队列

    1.设计你的循环队列 Leet Code 原题链接Leet Code 原题动画演示视频设计你的循环队列实现。 循环...

  • 循环队列的Java实现

    用数组实现循环队列,循环队列的难点在于头节点和尾节点的判断,判队列已经满了是通过(tail + 1)% n == ...

网友评论

      本文标题:循环队列的实现方法1

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