假设链队已经定义好了,其中包含了队头指针front和队尾指针rear,数据元素结构体Node如下:

typedef struct Node {
    int data;           // 数据域
    struct Node *next;  // 指向下一节点的指针
} Node;

则进队运算的函数可以如下定义:

void enQueue(Node **front, Node **rear, int data) {
    Node *p = (Node*)malloc(sizeof(Node));    // 创建新节点
    p->data = data;                           // 将数据存入新节点
    p->next = NULL;                           // 新节点暂时没有下一个节点

    if (*rear == NULL) {                      // 如果队列为空
        *front = *rear = p;                   // 队头和队尾都是新节点
    } else {
        (*rear)->next = p;                    // 将新节点链接到队尾
        *rear = p;                             // 更新队尾指针
    }
}

其中,front和rear是指向队头和队尾指针的指针,因为如果直接传递指针,函数内部修改指针的值不会影响外部的指针。因此需要传递指针的指针,也称为二级指针

用c语言编写链队中数据元素的进队运算

原文地址: https://www.cveoy.top/t/topic/g26J 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录