请用c语言创建一个链式队列
时间: 2023-10-11 11:11:34 浏览: 88
当然可以,以下是一个简单的链式队列的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
typedef struct Queue {
Node* front;
Node* rear;
} Queue;
void init(Queue* q) {
q->front = NULL;
q->rear = NULL;
}
int isEmpty(Queue* q) {
return q->front == NULL;
}
void enqueue(Queue* q, int data) {
Node* newNode = (Node*) malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (isEmpty(q)) {
q->front = newNode;
q->rear = newNode;
} else {
q->rear->next = newNode;
q->rear = newNode;
}
}
int dequeue(Queue* q) {
if (isEmpty(q)) {
printf("Queue is empty!\n");
return -1;
}
Node* tmp = q->front;
int data = tmp->data;
q->front = tmp->next;
if (q->front == NULL) {
q->rear = NULL;
}
free(tmp);
return data;
}
void printQueue(Queue* q) {
printf("Queue: ");
Node* tmp = q->front;
while (tmp != NULL) {
printf("%d ", tmp->data);
tmp = tmp->next;
}
printf("\n");
}
int main() {
Queue q;
init(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printQueue(&q);
dequeue(&q);
printQueue(&q);
enqueue(&q, 4);
printQueue(&q);
return 0;
}
```
这个实现使用了两个结构体,一个是节点结构体,一个是队列结构体。节点结构体包含了一个整数数据和指向下一个节点的指针。队列结构体包含了队列的头和尾节点的指针。我们使用函数来实现队列的基本操作,例如队列的初始化、判断队列是否为空、入队、出队以及打印队列。在主函数中,我们使用这些函数来测试我们实现的链式队列。
阅读全文