队列的基本实现

Posted zklgy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了队列的基本实现相关的知识,希望对你有一定的参考价值。

线性结构的两种常见应用 
        队列
定义
        一种可以实现“先进先出”的存储结构
分类
        链式队列  --用链表实现
    
        静态队列 --用数组实现
                    静态队列通常使用循环队列实现的
 
        循环队列:
            
                    1、静态队列为什么必须是循环队列          
  技术分享图片

 

 
                       注意:  f:头部,r:尾部的下一个节点 。
                                    避免浪费空间,反复利用内存
                    2、循环队列需要几个参数来确定
                         front :指向第一个元素
                         rear: 指向最后一个有效元素的下一个
                    3、循环队列的个各参数的含义
 
                    4、循环队列入队伪算法
                            操作:
                                        将值存入real所代表的位置
                                        r=(r+1)%数组长度
                    5、循环队列出队伪算法
                                        f=(f+1)%数组长度
                    6、如果判断循环队列已满
                                       1、 多增加一个参数位
                                       2、少用一个元素
                    7、如果判断循环队列为空
                                         front = rear
 
#include <stdio.h>
typedef struct Queue
{
    int  * pBase; //数组的首地址
    int front;
    int rear;
}QUEUE;

void init(QUEUE * pQ)
{
    pQ->pBase = (int *) malloc(sizeof(int)*6);
    pQ->front =0; 
    pQ-rear =0;
}

bool out_queue(QUEUE *pQ ; int * pVal)
{
    if(emput_queue(pQ))
    {
        return false;
    }
    *pVal =pQ->pBase[pQ->front];
    pQ->front = (pQ->front+1)%6;
}

emput_queue()
{
    if(pQ->font==pQ->rear)
    {
        return true;
    }
    return false;
}
//入队
bool en_queue(QUEUE * pQ ,int pVal)
{
    if(full_queue(pQ))
    {
        printf("队列已经满了");
        return false;
    }
    else
    {
        pQ->pbase[pQ->rear] = pVal;
        pQ->rear = (pQ->rear+1)% 6;
        return true;
    }
}

bool full_queue(QUEUE * pQ )
{
    if((pQ->rear+1)%6 == pQ->front)
    {
        true;
    }
    esle
    {
        false;
    }
}
void traverse-queue(QUEUE * pQ)
{
    int i =pQ->front;
    while(i!=pQ->rear)
    {
        printf("输出元素");
        i=(i+1)%6;
    }
}
int main ()
{
    QUEUE Q;
    init(&Q);
    return 0;
}

 

以上是关于队列的基本实现的主要内容,如果未能解决你的问题,请参考以下文章

perl中的队列

html PHP代码片段: - AJAX基本示例:此代码演示了使用PHP和JavaScript实现的基本AJAX功能。

C++数据结构——顺序队列(基本代码实现与案例)

C++数据结构——链队列(基本代码实现与案例)

数据结构之链式队列的代码实现及有趣应用

数据结构之链式队列的代码实现及有趣应用