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)
};

posted @ 2025-04-02 11:47  Toby0919  阅读(3)  评论(0)    收藏  举报