用c语言编写链队中数据元素的进队运算
假设链队已经定义好了,其中包含了队头指针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是指向队头和队尾指针的指针,因为如果直接传递指针,函数内部修改指针的值不会影响外部的指针。因此需要传递指针的指针,也称为二级指针
原文地址: https://www.cveoy.top/t/topic/g26J 著作权归作者所有。请勿转载和采集!