以下是使用C语言实现链式队列的代码,可以实现输入数字入队,输入字符出队的功能:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义链式队列结构体
typedef struct QueueNode {
int data; // 存储数字
struct QueueNode* next; // 指向下一个节点
} QueueNode;
// 定义链式队列结构体
typedef struct {
QueueNode* front; // 指向队头节点
QueueNode* rear; // 指向队尾节点
} LinkedQueue;
// 初始化链式队列
void InitQueue(LinkedQueue* queue) {
queue->front = NULL;
queue->rear = NULL;
}
// 入队操作
void EnQueue(LinkedQueue* queue, int data) {
QueueNode* newNode = (QueueNode*)malloc(sizeof(QueueNode)); // 创建新节点
newNode->data = data; // 将数字存储到新节点中
newNode->next = NULL; // 新节点的下一个节点为空
if (queue->rear == NULL) { // 如果队列为空,将新节点设置为队头和队尾
queue->front = newNode;
queue->rear = newNode;
} else { // 如果队列不为空,将新节点添加到队尾,并更新队尾指针
queue->rear->next = newNode;
queue->rear = newNode;
}
}
// 出队操作,返回出队的字符,如果队列为空,返回-1
char DeQueue(LinkedQueue* queue) {
if (queue->front == NULL) { // 如果队列为空,返回-1表示失败
return -1;
} else { // 如果队列不为空,将队头节点从队列中删除,并返回其存储的字符,同时更新队头指针
char data = queue->front->data;
QueueNode* temp = queue->front;
queue->front = queue->front->next;
free(temp); // 释放已删除节点的内存空间
return data;
}
c语言struct用法例子}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论