数据结构---队列---顺序表

来源:互联网 发布:8月金融数据 编辑:程序博客网 时间:2024/06/03 16:12

队列是一种特殊的线性表,只允许在表的前端进行删除操作,而在表的后端进行插入操作。

进行插入操作的端称为队尾,进行删除操作的端称为队头。


#define QUEUEMAX 15

typedef struct
{
        DATA data[QUEUEMAX];
        int head;
        int tail;
}SeqQueue;

SeqQueue *SeqQueueInit()
{
        if(q = (SeqQueue*)malloc(sizeof(SeqQueue)))
        {
                q->head = 0;
                q->tail = 0;
                return q;
        }
        else
        {
                return NULL;
        }
}

void SeqQueueFree(SeqQueue *q)
{
        if(q != NULL)
        free(q);
}

int SeqQueueIsEmpty(SeqQueue *q)
{
        return (q->head == q->tail);
}

int SeqQueueIsFull(SeqQueue *q)
{
        return (q->tail == QUEUEMAX);
}

int SeqQueueLen(SeqQueue *q)
{
        return (q->tail - q->head);
}

int SeqQueueIn(SeqQueue *q,DATA data)
{
        if(data->tail == QUEUEMAX)
        {
                printf("queue is full\n");
                return(0);
        }
        else
        {
                q->data[q->tail++] = data;
                return(1);
        }
}

DATA *SeqQueueOut(SeqQueue *q)
{
        if(q->head == q->tail)
        {
                printf("\n queue is empty \n");
                return NULL;
        }
        else
        {
                return &(q->data[q->head++]);
        }
}

DATA *SeqQueuePeek(SeqQueue *q)
{
        if(SeqQueueIsEmpty(q))
        {
                printf("queue is empty\n");
        }
        else
        {
                return &(q->data[q->head]);
        }
}

0 0
原创粉丝点击