首页 > 其他 > 详细

队列的基本实现

时间:2018-01-15 23:38:09      阅读:217      评论:0      收藏:0      [点我收藏+]
线性结构的两种常见应用 
        队列
定义
        一种可以实现“先进先出”的存储结构
分类
        链式队列  --用链表实现
    
        静态队列 --用数组实现
                    静态队列通常使用循环队列实现的
 
        循环队列:
            
                    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;
}

 

队列的基本实现

原文:https://www.cnblogs.com/zklgy/p/8290327.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!