用c语言编写链队中数据元素出队运算
链队的数据元素出队运算可以通过以下步骤来实现:
-
判断队列是否为空,如果为空则无法进行出队操作,直接返回。
-
将队头元素的值保存到一个临时变量中。
-
将队头节点从队列中删除,并将队头指针指向下一个节点。
-
释放被删除节点的内存空间。
-
返回临时变量中保存的队头元素的值。
下面是一个用C语言实现链队中数据元素出队运算的示例代码:
#include <stdio.h>
#include <stdlib.h>
// 链队节点结构体
typedef struct node {
int data;
struct node *next;
} Node;
// 链队结构体
typedef struct {
Node *front; // 队头指针
Node *rear; // 队尾指针
} LinkQueue;
// 初始化链队
void initQueue(LinkQueue *queue) {
queue->front = queue->rear = NULL;
}
// 判断链队是否为空
int isEmpty(LinkQueue *queue) {
return queue->front == NULL;
}
// 入队操作
void enQueue(LinkQueue *queue, int data) {
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (isEmpty(queue)) {
queue->front = queue->rear = newNode;
} else {
queue->rear->next = newNode;
queue->rear = newNode;
}
}
// 出队操作
int deQueue(LinkQueue *queue) {
if (isEmpty(queue)) {
printf("Queue is empty!\n");
return -1;
}
int data = queue->front->data;
Node *temp = queue->front;
queue->front = queue->front->next;
free(temp);
if (queue->front == NULL) {
queue->rear = NULL;
}
return data;
}
// 测试代码
int main() {
LinkQueue queue;
initQueue(&queue);
enQueue(&queue, 1);
enQueue(&queue, 2);
enQueue(&queue, 3);
printf("deQueue: %d\n", deQueue(&queue));
printf("deQueue: %d\n", deQueue(&queue));
printf("deQueue: %d\n", deQueue(&queue));
printf("deQueue: %d\n", deQueue(&queue));
return 0;
}
输出结果为:
deQueue: 1
deQueue: 2
deQueue: 3
Queue is empty!
deQueue: -1
``
原文地址: https://www.cveoy.top/t/topic/g29r 著作权归作者所有。请勿转载和采集!