码迷,mamicode.com
首页 > 其他好文 > 详细

队列的基本实现

时间:2018-01-16 01:01:16      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:bool   分类   ted   blog   else   color   循环   http   ase   

线性结构的两种常见应用 
        队列
定义
        一种可以实现“先进先出”的存储结构
分类
        链式队列  --用链表实现
    
        静态队列 --用数组实现
                    静态队列通常使用循环队列实现的
 
        循环队列:
            
                    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;
}

 

队列的基本实现

标签:bool   分类   ted   blog   else   color   循环   http   ase   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!