顺序队列的基本操作c(一)实现顺序队列的基本操作,要求如下: (1)建立队列: 建立一个字符类型的顺序队列,并初始化队列。 (2)入队: 将字符 'A'、'B'、'C' 依次入队。 (3)获取队头元素: 获取队头元素并输出。 (4)出队: 出队并输出两个元素。使用c语言输出
时间: 2024-10-20 07:10:29 浏览: 42
顺序队列的实现(Go)
在C语言中,我们可以使用数组来实现顺序队列。下面是一个简单的顺序队列的操作实现:
```c
#include <stdio.h>
#define QUEUE_SIZE 5 // 队列最大容量
typedef struct {
char data[QUEUE_SIZE]; // 存储数据的数组
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
void init(Queue* q) {
q->front = q->rear = -1;
}
// 入队操作
void enqueue(Queue* q, char c) {
if ((q->rear + 1) % QUEUE_SIZE == q->front) { // 判断队满
printf("Queue is full.\n");
return;
}
q->data[++q->rear] = c; // 如果队尾不是最后一位,将新元素放在队尾
if (q->front == -1) q->front = 0; // 队头为空,更新队头
}
// 获取队头元素(不会真正移除)
char getFront(Queue* q) {
if (q->front == -1) {
printf("Queue is empty.\n");
return '\0';
}
return q->data[q->front];
}
// 出队操作
void dequeue(Queue* q) {
if (q->front == -1) {
printf("Queue is empty.\n");
return;
} else {
if (q->front == q->rear) { // 队列仅剩一个元素,更新队头和队尾
q->front = q->rear = -1;
} else {
q->front++; // 移动队头指针
}
}
}
int main() {
Queue myQueue;
init(&myQueue);
// 入队操作
enqueue(&myQueue, 'A');
enqueue(&myQueue, 'B');
enqueue(&myQueue, 'C');
// 输出队头元素
printf("Front element: %c\n", getFront(&myQueue));
// 出队操作并输出
dequeue(&myQueue);
printf("Popped elements: %c, %c\n", getFront(&myQueue), myQueue.data[0]);
return 0;
}
```
在这个例子中,我们首先创建了一个顺序队列结构体,然后实现了初始化、入队、获取队头元素以及出队等基本操作。注意在实际应用中,为了防止数组越界,还需要对队列长度进行检查。运行此程序,你会看到输出相应的操作结果。
阅读全文