3、实现链式队列入队的算法。(要求:入队的时候请在队尾插入元素。队列满的条件请设置为6)用c语言写
时间: 2024-12-12 20:17:35 浏览: 19
在C语言中,我们可以使用链表数据结构来实现一个大小限制为6的队列。这里是一个简单的单向链表队列入队操作的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 链表节点结构
typedef struct Node {
int data;
struct Node* next; // 指向下一个节点的指针
} Node;
// 创建新节点
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->next = NULL;
return newNode;
}
// 初始化空队列
Node* initQueue() {
return NULL;
}
// 插入节点到队尾
void enqueue(Node** queue, int value) {
if (*queue == NULL || (*queue)->next == NULL) { // 如果队列为空或已满(当前队列为6个节点)
Node* newNode = createNode(value);
*queue = newNode; // 如果队列为空,直接将新节点设为首节点
} else {
Node* current = *queue;
while (current->next != NULL) {
current = current->next;
}
current->next = createNode(value); // 当队列非空时,在队尾添加新节点
}
}
// 打印链表(用于测试)
void printQueue(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
int main() {
Node* queue = initQueue();
// 入队操作示例
for (int i = 0; i < 7; i++) { // 试图加入7个元素,模拟队列满的情况
enqueue(&queue, i);
printQueue(queue); // 输出队列内容
}
return 0;
}
```
在这个例子中,`enqueue`函数会检查队列是否已满(即队首和队尾都存在节点),如果满则拒绝入队,否则将新的节点添加到队尾。
阅读全文