队列的定义和简单使用

队列(Queue)其实也是线性结构,但只是在操作上有点不一样,队列的特点,先进先出(FIFO),所以他也有不同的应用,生活当中队列的例子有很多,比如排队啊,很多问题都是可以用队列来解决,

下面来说说队列的定义和队列上面的相关操作,

1.定义队列的节点

#include <stdio.h>
#include<stdlib.h>
#define MaxSize 100

typedef struct 
{
    int* base;
    int front;
    int rear;
}Queue;

2.队列的初始化操作

int initQueue(Queue * q) 
{
    q->base = (int*)malloc(sizeof(Queue) * MaxSize);
    if (q->base)
    {
        q->front = q->rear = 0;
        return 0;
    }
    else
    {
        return -1;
    }

}

3.获得队列中元素的个数

int lengthQueue(Queue *q)
{
    return (q->rear - q->front + MaxSize) % MaxSize;
}

4.获得队列中队头元素

int getElem(Queue *q)
{
    if (q->front!=q->rear)
    {
        return q->base[q->front];
    }
    else
    {
        return -1;
    }
}

5.入队操作

int inQueue(Queue* q,int e) 
{
    if ((q->rear+1)%MaxSize==q->front)
    {
        return -1;
    }
    else
    {
        q->base[q->rear] = e;
        q->rear = (q->rear + 1) % MaxSize;
        return 0;
    }

}

6.出队操作

int outQueue(Queue* q, int e) 
{
    if (q->front==q->rear)
    {
        return -1;
    }
    else
    {
        e=q->base[q->front];
        q->front = (q->front + 1) % MaxSize;
        return e;
    }

}

 

好了,我们下回见,peace

posted @ 2020-08-03 16:32  野评测  阅读(732)  评论(0)    收藏  举报