公司的产品比较核心的地方用到了一个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;
}