以下是使用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小时内删除。