c语言 怎么定义队列头指针,尾指针
时间: 2023-08-07 12:07:37 浏览: 99
在 C 语言中,我们可以使用结构体来定义一个队列。队列通常包含队列的头指针和尾指针,它们分别指向队列的头和尾。
以下是一个简单的队列结构体定义示例:
```
typedef struct queue {
int data[MAXSIZE];
int front;
int rear;
} Queue;
```
在这个结构体中,`data` 数组是队列的存储空间,`front` 和 `rear` 分别是队列的头指针和尾指针。`MAXSIZE` 是队列的最大长度。
在使用队列时,我们需要初始化队列的头指针和尾指针。一般情况下,我们可以将头指针和尾指针都设置为 0,表示队列为空。
```
Queue q;
q.front = q.rear = 0;
```
在进行入队操作时,我们需要先判断队列是否已满。如果队列已满,则入队操作失败。否则,我们将元素添加到队列尾部,并更新尾指针。
```
void enqueue(Queue *q, int value) {
if (q->rear == MAXSIZE) {
printf("Queue is full\n");
} else {
q->data[q->rear] = value;
q->rear++;
}
}
```
在进行出队操作时,我们需要先判断队列是否为空。如果队列为空,则出队操作失败。否则,我们将队列头部的元素弹出,并更新头指针。
```
int dequeue(Queue *q) {
if (q->front == q->rear) {
printf("Queue is empty\n");
return -1;
} else {
int value = q->data[q->front];
q->front++;
return value;
}
}
```
需要注意的是,在队列为空时,头指针和尾指针应该指向同一个位置,否则将会导致出队操作失败。
阅读全文