队列顺序存储结构

公司的产品比较核心的地方用到了一个FIFO,虽然从没有去看看到底有多么复杂,但自己摸索下简单的队列还是可以滴,队列只允许在一端来进行插入操作,而在另一端来进行删除操作的线性表,也就是一种先进先出的线性表,First In First Out,所以就叫FIFO,插入的一端为队尾,删除的一端为队头,这样比较符合思维

数据结构:

typedef int QElemType;

typedef struct {

    QElemType data[MAXSIZE];

    int front;

    int rear;

}

有了前面线性表和栈的经验,队列顺序存储结构例子就比较简单了:

#include <stdio.h>
#include <malloc.h>

#define MAXSIZE 10

typedef struct {
    int data[MAXSIZE];
    int front;
    int rear;
}SqQueue;

int QueuePush(SqQueue *S, int num){
    S->data[S->rear] = num;
    ++S->rear;
    return 0;
}

int QueuePop(SqQueue *S){
    ++S->front;
    return 0;
}

int main(){
    SqQueue *s;
    s = (SqQueue *)malloc(sizeof(SqQueue));
    s->front = 0;
    s->rear = 0;

    /*
    int i;
    for (i = 0; i < MAXSIZE; i++){
        s->data[i] = i;
        ++s->rear;
    }*/

    int i;
    for (i = 0; i < MAXSIZE; i++){
        QueuePush(s, i);
    }

    QueuePop(s);
    QueuePop(s);
    QueuePop(s);

    int j = 0;
    for (j = s->front; j < s->rear; j++){
        printf(“data[%d] = %d\n”, j, s->data[j]);
    }
    free(s);
    return 0;
}

发表回复