队列的初始化 2.4队列的判空操作队列的入队操作 队列的出队操作 队列的获取队首元素操作 队列的获取队尾元素操作 队列的计算队列元素数量操作 队列的销毁操作
时间: 2023-11-20 08:53:19 浏览: 97
队列的入队出队初始化操作.doc
队列是一种先进先出(FIFO)的数据结构,C语言中可以使用数组或链表来实现队列。下面是使用数组实现队列的初始化、判空、入队、出队、获取队首元素、获取队尾元素、计算队列元素数量和销毁操作的示例代码:
1. 队列的初始化:
```c
#define MAX_SIZE 100 // 定义队列的最大长度
typedef struct {
int data[MAX_SIZE]; // 存储队列元素的数组
int front; // 队首指针
int rear; // 队尾指针
} Queue;
void initQueue(Queue *q) {
q->front = q->rear = 0; // 初始化队首和队尾指针
}
```
2. 队列的判空操作:
```c
int isEmpty(Queue *q) {
return q->front == q->rear; // 队首指针等于队尾指针时队列为空
}
```
3. 队列的入队操作:
```c
int enqueue(Queue *q, int x) {
if (q->rear == MAX_SIZE) { // 队列已满
return 0;
} else {
q->data[q->rear++] = x; // 将元素插入队尾并将队尾指针后移
return 1;
}
}
```
4. 队列的出队操作:
```c
int dequeue(Queue *q, int *x) {
if (isEmpty(q)) { // 队列为空
return 0;
} else {
*x = q->data[q->front++]; // 取出队首元素并将队首指针后移
return 1;
}
}
```
5. 队列的获取队首元素操作:
```c
int getFront(Queue *q, int *x) {
if (isEmpty(q)) { // 队列为空
return 0;
} else {
*x = q->data[q->front]; // 获取队首元素
return 1;
}
}
```
6. 队列的获取队尾元素操作:
```c
int getRear(Queue *q, int *x) {
if (isEmpty(q)) { // 队列为空
return 0;
} else {
*x = q->data[q->rear - 1]; // 获取队尾元素
return 1;
}
}
```
7. 队列的计算队列元素数量操作:
```c
int size(Queue *q) {
return q->rear - q->front; // 队列元素数量等于队尾指针减去队首指针
}
```
8. 队列的销毁操作:
```c
void destroyQueue(Queue *q) {
q->front = q->rear = 0; // 将队首和队尾指针重置为0
}
```
阅读全文