C语言请设计一个队列的管理节点模型要求除必要成员外还可以存放队列名称和节点个数
以下是一个C语言中队列管理节点模型的设计示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LENGTH 50
// 队列节点结构体
typedef struct QueueNode {
int data;
struct QueueNode* next;
} QueueNode;
// 队列管理节点结构体
typedef struct QueueManagerNode {
char name[MAX_NAME_LENGTH];
int nodeCount;
QueueNode* front;
QueueNode* rear;
} QueueManagerNode;
// 初始化队列管理节点
void initialize(QueueManagerNode* manager, const char* name) {
strcpy(manager->name, name);
manager->nodeCount = 0;
manager->front = NULL;
manager->rear = NULL;
}
// 向队列中添加元素
void enqueue(QueueManagerNode* manager, int data) {
QueueNode* newNode = (QueueNode*)malloc(sizeof(QueueNode));
newNode->data = data;
newNode->next = NULL;
if (manager->front == NULL) {
manager->front = newNode;
manager->rear = newNode;
} else {
manager->rear->next = newNode;
manager->rear = newNode;
}
manager->nodeCount++;
}
// 从队列中删除元素
void dequeue(QueueManagerNode* manager) {
if (manager->front == NULL) {
printf("Queue is empty.\n");
return;
}
QueueNode* temp = manager->front;
manager->front = manager->front->next;
free(temp);
if (manager->front == NULL) {
manager->rear = NULL;
}
manager->nodeCount--;
}
// 获取队列中的元素个数
int getNodeCount(QueueManagerNode* manager) {
return manager->nodeCount;
}
// 打印队列中的元素
void printQueue(QueueManagerNode* manager) {
QueueNode* current = manager->front;
printf("%s: ", manager->name);
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
int main() {
QueueManagerNode manager;
initialize(&manager, "Queue 1");
enqueue(&manager, 10);
enqueue(&manager, 20);
enqueue(&manager, 30);
printQueue(&manager);
dequeue(&manager);
printQueue(&manager);
int count = getNodeCount(&manager);
printf("Number of nodes in the queue: %d\n", count);
return 0;
}
在上述代码中,我们定义了两个结构体:QueueNode表示队列节点,其中包含一个data成员表示节点的数据,以及一个next指针表示下一个节点的地址;QueueManagerNode表示队列管理节点,其中包含一个name数组用于存储队列名称,一个nodeCount表示队列节点的个数,以及一个front指针表示队列的头节点地址,一个rear指针表示队列的尾节点地址。
我们通过initialize函数初始化队列管理节点;enqueue函数向队列中添加元素;dequeue函数从队列中删除元素;getNodeCount函数获取队列中的节点个数;printQueue函数打印队列中的元素。
在main函数中,我们创建了一个队列管理节点manager,并进行了一些测试操作,如向队列中添加元素、删除元素、获取节点个数,并打印队列中的元素。
请注意,上述代码只是一个简单的示例,实际应用中可能需要根据具体需求进行相应的修改和扩展
原文地址: https://www.cveoy.top/t/topic/iOkX 著作权归作者所有。请勿转载和采集!