linux c实现队列存放特定长度的字符和取出
时间: 2023-12-10 21:42:32 浏览: 47
下面是一个简单的Linux C代码实现,实现了一个长度为10的字符队列,可以存放10个字符,并且可以从队列中取出元素。
```c
#include <stdio.h>
#include <stdlib.h>
#define QUEUE_SIZE 10
typedef struct {
char data[QUEUE_SIZE];
int front;
int rear;
} Queue;
// 初始化队列
void initQueue(Queue *q) {
q->front = 0;
q->rear = 0;
}
// 判断队列是否为空
int isEmpty(Queue *q) {
return (q->front == q->rear);
}
// 判断队列是否已满
int isFull(Queue *q) {
return ((q->rear + 1) % QUEUE_SIZE == q->front);
}
// 入队操作
void enQueue(Queue *q, char c) {
if (isFull(q)) {
printf("Queue is full!\n");
return;
}
q->data[q->rear] = c;
q->rear = (q->rear + 1) % QUEUE_SIZE;
}
// 出队操作
char deQueue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty!\n");
return '\0';
}
char c = q->data[q->front];
q->front = (q->front + 1) % QUEUE_SIZE;
return c;
}
int main() {
Queue q;
initQueue(&q);
// 入队10个字符
for (char c = 'A'; c <= 'J'; c++) {
enQueue(&q, c);
}
// 出队所有元素
while (!isEmpty(&q)) {
printf("%c ", deQueue(&q));
}
printf("\n");
return 0;
}
```
这个例子中,我们使用一个结构体来表示队列,它包含一个字符数组和两个指针:front 和 rear。front 指向队列头部元素,rear 指向队列尾部元素的下一个位置。当 front == rear 时,队列为空;当 (rear+1)%QUEUE_SIZE == front 时,队列已满。
代码中的 initQueue、isEmpty、isFull、enQueue 和 deQueue 分别用于队列的初始化、判断队列是否为空或已满、入队和出队操作。在主函数中,我们入队了10个字符,然后出队所有元素并打印出来。