数据结构之队列

 

 

循环队列举例:

 

#include"stdio.h"
#include"malloc.h"

typedef struct Queue
{
    int front;
    int rear;
    int *pBase;
}QUEUE,*PQUEUE;

void init(PQUEUE Q);
void add(PQUEUE Q,int val);
void show(PQUEUE Q);
bool out(PQUEUE Q,int* val);
bool full(PQUEUE Q);
bool empty(PQUEUE Q);

int main(void)
{
    QUEUE Q;
    int val;
    init(&Q);
/*    add(&Q,1);
    add(&Q,2);
    add(&Q,3);
*/
    show(&Q);
    if(out(&Q,&val))
    {
        printf("出队成功值是:%d\n",val);
    }
    else
    {
        printf("出队失败");
    }
    show(&Q);
    return 0;
}

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

void add(PQUEUE Q,int val)
{
    if(full(Q))
    {
    }
    else
    {
        Q->pBase[Q->rear]=val;
        Q->rear=(Q->rear+1)%6;
    }
}

void show(PQUEUE Q)
{
    int i=Q->front;
    while(i!=Q->rear)
    {
        printf("%d",Q->pBase[i]);
        i=(i+1)%6;
    }
}

bool out(PQUEUE Q,int* val)
{
    if(empty(Q))
    {
        return false;
    }
    else
    {
        *val=Q->pBase[Q->front];
        Q->front=(Q->front+1)%6;
    }
}

bool full(PQUEUE Q)
{
    if((Q->rear+1)%6==Q->front)
    {
        return true;
    }
    else
    {
        return false;
    }
}

bool empty(PQUEUE Q)
{
    if(Q->front==Q->rear)
    {
        return true;
    }
    else
    {
        return false;
    }
}

 

posted @ 2017-05-18 13:03  该☆隐  阅读(112)  评论(0编辑  收藏  举报