【About Queue】(待改)

队列

队列满足FIFO规则,先进先出。

C语言代码:(Segmentation fault你大爷(メ ゚皿゚)メ)

#include<stdio.h>
#include<stdlib.h>

typedef struct Queue
{
    int size;
    int front;
    int rear;
    int *elements;
}Queue;

void createqueue(Queue *Q,int maxsize)
{
    Q=(Queue*)malloc(sizeof(int)*maxsize);    
    /*初始属性*/
    Q->elements=(int*)malloc(sizeof(int)*maxsize);
    //!!!???
    Q->size=maxsize;
    Q->front=Q->rear=0;    //置为空队列
}


void Dequeue(Queue *Q)
{
    if(Q->front==Q->rear)
    {
        printf("Queue is Empty!\n");
        return;
    }    //若为空队列要提醒下~
    else
    {
        Q->front=(Q->front+1)%Q->size;    //Q.front循环+1,为防止出现负数啦
    }
}


int front(Queue *Q)    //就是书上那个gethead()啦(-`ェ´-╬)
{
    if(Q->rear==Q->front)
    {
        printf("Queue is Empty!\n");
        exit(0);
    }
    return Q->elements[Q->front];
}

void Enqueue(Queue *Q,int element)
{
    if((Q->front+1)%Q->size==Q->front)    
    //这里空出一个元素,使得当(Q.front+1)%Q.size==Q.front,判断队列为满
    {
        printf("Queue is Full!\n");
    }
    else
    {
        Q->elements[Q->rear]=element;
        Q->rear=(Q->rear+1)%Q->size;
    }
}

int main()
{
    Queue *Q;
    createqueue(Q,3);
    Enqueue(Q,3);
    printf("%d\n",front(Q));
    return 0;
}

 

posted @ 2016-01-03 03:39  陈玩玩  阅读(215)  评论(0编辑  收藏  举报