队列-初始化、入队列、计算长度及打印1(顺序存储)
时间: 2023-10-06 10:10:25 浏览: 83
队列(Queue)是一种数据结构,具有先进先出(FIFO)的特点。在队列中,新元素只能在队尾入队,元素只能在队头出队。
队列的初始化、入队列、计算长度及打印可以用顺序存储实现,即用数组来存储队列元素。
以下是用C语言实现队列的代码示例:
```c
#include <stdio.h>
#define MAXSIZE 100 // 队列最大长度
typedef struct {
int data[MAXSIZE]; // 存储队列元素的数组
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void initQueue(Queue *q) {
q->front = q->rear = -1; // 队头和队尾指针初始值为-1
}
// 判断队列是否为空
int isQueueEmpty(Queue *q) {
return q->front == q->rear;
}
// 判断队列是否已满
int isQueueFull(Queue *q) {
return q->rear == MAXSIZE - 1;
}
// 入队列
void enQueue(Queue *q, int x) {
if (isQueueFull(q)) {
printf("Queue is full!\n");
return;
}
q->rear++; // 队尾指针加1
q->data[q->rear] = x; // 将新元素存入队列
}
// 计算队列长度
int queueLength(Queue *q) {
return q->rear - q->front;
}
// 打印队列元素
void printQueue(Queue *q) {
if (isQueueEmpty(q)) {
printf("Queue is empty!\n");
return;
}
printf("Queue elements: ");
for (int i = q->front + 1; i <= q->rear; i++) {
printf("%d ", q->data[i]);
}
printf("\n");
}
int main() {
Queue q;
initQueue(&q);
enQueue(&q, 1);
enQueue(&q, 2);
enQueue(&q, 3);
printf("Queue length: %d\n", queueLength(&q));
printQueue(&q);
return 0;
}
```
输出结果为:
```
Queue length: 3
Queue elements: 1 2 3
```