4.2 队列
1.1 FIFO队列(先进先出)
一个队列需要支持三种操作(查询、删除、插入)

队首:允许元素进行删除的一端;队尾:允许元素进行插入的一端
1.2 FIFO队列的接口
数据入队:队列的插入过程,将数据元素从队尾进行插入的过程
数据出队:将队首的元素进行删除
清空队列:一直出队,直到队列为空,当队首和队尾重合时,就代表队尾为空(队首移动到队尾)
获取队列元素个数:通过新建一个变量存储
2.1 如何建立队列(结构体数组或者链表)
结构体数组
define DataType int
define maxn 100005
struct Queue {
DataType data[maxn];
int head, tail;
};
void QueueClear(struct Queue* que) {
que->head = que->tail = 0;
}
void QueueEnqueue(struct Queue que, DataType dt) {
que->data[ que->tail++ ] = dt;
}
void QueueDequeue(struct Queue que) {
++que->head;
}
DataType QueueGetFront(struct Queue* que) {
return que->data[ que->head ];
}
int QueueGetSize(struct Queue* que) {
return que->tail - que->head;
}
int QueueIsEmpty(struct Queue* que) {
return !QueueGetSize(que);
}
链表
typedef int DataType;               // (1)
struct QueueNode;                   // (2)
struct QueueNode {                  // (3)
DataType data;
struct QueueNode *next;
};
struct Queue {
struct QueueNode *head, *tail;  // (4)
int size;                       // (5)
};

                
            
        
浙公网安备 33010602011771号