3、用C语言编程实现:(1)创建队列,将asdfghjkl依次入队。(2)将队列asdfghjkl依次出队。
时间: 2024-12-08 16:25:00 浏览: 6
在C语言中,我们可以使用数组或链表来实现队列数据结构。这里我们选择链表作为基础,因为它更方便操作头部和尾部元素。以下是使用结构体和指针实现的一个简单队列的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 队列节点定义
typedef struct Node {
char data;
struct Node* next;
} QueueNode;
// 队列结构体
typedef struct Queue {
QueueNode* front; // 队首
QueueNode* rear; // 队尾
int size; // 队列长度
} Queue;
// 初始化队列
Queue* createQueue() {
Queue* queue = (Queue*)malloc(sizeof(Queue));
queue->front = queue->rear = NULL;
queue->size = 0;
return queue;
}
// 入队操作 - 将字符添加到队尾
void enqueue(Queue* queue, char data) {
QueueNode* newNode = (QueueNode*)malloc(sizeof(QueueNode));
newNode->data = data;
newNode->next = NULL;
if (queue->rear == NULL) {
queue->front = queue->rear = newNode;
} else {
queue->rear->next = newNode;
queue->rear = newNode;
}
queue->size++;
}
// 出队操作 - 删除并返回队首元素
char dequeue(Queue* queue) {
if (queue->front == NULL) {
printf("Error: Queue is empty.\n");
return '\0';
}
char data = queue->front->data;
QueueNode* temp = queue->front;
queue->front = queue->front->next;
if (queue->front == NULL) {
queue->rear = NULL;
}
free(temp);
queue->size--;
return data;
}
int main() {
Queue* q = createQueue();
// 入队操作
for (char c = 'a'; c <= 'k'; c++) {
enqueue(q, c);
printf("Enqueued %c\n", c);
}
// 出队操作
while (q->front != NULL) {
char d = dequeue(q);
printf("Dequeued %c\n", d);
}
return 0;
}
```
在这个示例中,我们首先创建了一个队列,然后遍历输入字符串`"asdfghjkl"`,逐个字符入队。接着在主函数中,我们从队列中删除所有元素并打印它们。
阅读全文