美文网首页
队列操作

队列操作

作者: 分迪_竹 | 来源:发表于2018-06-07 14:32 被阅读0次

typedef struct

{

    uint32 Data[MAX];  //存储数据的数组

    uint8 Front;  //队列的头

    uint8 Rear; //队列的尾

}QueueType;  //队列的数据结构

//初始化一个队列

void QueueInit(void)

{

    uint8 Count;

    Queue.Front = 0; //将头和尾都设为0

    Queue.Rear = 0;

    for (Count = 0; Count < MAX; Count++)

    {

        Queue.Data[Count] = 0;

    }

    return;

}

//在进行入队和出队操作的时候,用这个函数来调整头和尾

uint8 QueueNext(uint8 Index)

{

    return(((Index) + 1) % MAX);

}

//判断队列是否为空

uint8 QueueIsEmpty(QueueType Queue)

{

    uint32 Ret;

    if ((Queue).Front == (Queue).Rear) {  //当头和尾指向一致的时候,说明是空队列

        Ret = 1;

    }

    else {

Ret = 0;

}

return Ret;

}

//判断队列是否满了

uint8 QueueIsFull(QueueType Queue)

{

    uint32 Ret;

if((Queue).Front == QueueNext((Queue).Rear)) { //当尾后移一位和头重合,表示满了

Ret = 1;

}

else {

Ret = 0;

}

return Ret;

}

//入队操作

void QueueEnqueue(uint8 * DataPtr)

{

if (0 == QueueIsFull(Queue)) //如果队列没满的话,进行如下操作

    {

        Queue.Data[Queue.Rear] = *DataPtr; //将数据放到队列尾

        Queue.Rear = QueueNext(Queue.Rear);//将队列尾后移动一位

    }

}

//出队列操作

uint8 QueueDequeue(uint8 * DataPtr)

{

    uint8 Ret;

    if (0 == QueueIsEmpty(Queue))  //队列不为空的情况下进行出队操作

    {

        *DataPtr = Queue.Data[Queue.Front]; //将头的数据取出来

        Queue.Front = QueueNext(Queue.Front); //将头向后移一位

        Ret = 0;

    }

    else

    {

        Ret = 1;

    }

    return Ret;

}

外部的应用只需要调用初始化,入队和出队三个操作就可以了

相关文章

  • IOS多线程总结

    目录 简述 NSThread GCD操作与队列异步操作并行队列同步操作并行队列同步操作串行队列异步操作串行队列队列...

  • iOS NSOperation笔记

    操作 NSOperation操作队列 NSOperationQueues主队列NSOperationQueue *...

  • 利用链表实现队列

    队列成员变量: 队列长度 队列头节点 队列尾节点队列方法: 队列包含元素个数 队列是否为空 进队操作 出队操作 d...

  • 蓝杯二十二

    /*队列操作问题描述?队列操作题。根据输入的操作命令,操作队列(1)入队、(2)出队并输出、(3)计算队中元素个数...

  • 6.队列Queue

    目录:1.队列的定义2.队列的图解3.队列定义操作4.队列的实现 1.队列的定义 2.队列的图解 3.队列定义操作...

  • 堆和优先队列

    堆又称为优先队列,其通常包括至少两种操作:入队操作和出队操作。 普通队列与优先队列 普通队列:先进先出,后进后出优...

  • iOS主要知识总结--多线程之操作队列

    操作队列(NSOperation) 操作队列的几种常用方法 1. NSInvocationOperation 2....

  • 9.阻塞队列和线程池

    阻塞队列 特性 队列是空的时候,从队列获取元素的操作会被阻塞 队列是满的时候,往队列添加元素的操作会被阻塞 实现 ...

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

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

  • 数据结构题目34:顺序队列的操作

    顺序队列的操作有以下基本操作: 初始化一个队列 测试队列是否为空 取当前队头元素 队列的插入(进队) 队列的删除(...

网友评论

      本文标题:队列操作

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