使用c语言完成链队的基本操作:进队和出队
时间: 2023-08-09 07:05:04 浏览: 44
好的,以下是使用链队实现进队和出队的C语言代码,希望能帮到您:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
// 定义链队节点结构体
typedef struct Node {
int data;
struct Node *next;
} Node;
// 定义链队结构体
typedef struct Queue {
Node *front; // 队头指针
Node *rear; // 队尾指针
int size; // 队列元素个数
} Queue;
// 初始化链队
Queue* initQueue() {
Queue *q = (Queue*)malloc(sizeof(Queue));
q->front = NULL;
q->rear = NULL;
q->size = 0;
return q;
}
// 判断链队是否为空
bool isEmpty(Queue *q) {
return q->size == 0;
}
// 获取链队元素个数
int getSize(Queue *q) {
return q->size;
}
// 进队
void enqueue(Queue *q, int data) {
Node *node = (Node*)malloc(sizeof(Node));
node->data = data;
node->next = NULL;
if (isEmpty(q)) {
q->front = node;
} else {
q->rear->next = node;
}
q->rear = node;
q->size++;
}
// 出队
int dequeue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return -1;
}
Node *node = q->front;
int data = node->data;
q->front = node->next;
free(node);
q->size--;
if (isEmpty(q)) {
q->rear = NULL;
}
return data;
}
int main() {
// 初始化链队
Queue *q = initQueue();
// 进队
enqueue(q, 1);
enqueue(q, 2);
enqueue(q, 3);
// 出队
printf("%d\n", dequeue(q));
printf("%d\n", dequeue(q));
printf("%d\n", dequeue(q));
return 0;
}
```
以上是一个简单的链队示例,可以在其中添加更多的操作,如获取队头元素等,以满足您的需求。