数据结构队列的操作代码
时间: 2023-10-12 14:20:34 浏览: 82
队列是一种先进先出(FIFO)的线性数据结构,它支持在队列尾部插入元素,从队列头部删除元素。以下是队列的基本操作代码:
```
// 定义队列结构体
typedef struct queue {
int *arr; // 队列元素数组
int front; // 队列头
int rear; // 队列尾
int size; // 队列当前元素个数
int capacity; // 队列容量
} Queue;
// 创建队列
Queue* createQueue(int capacity) {
Queue *q = (Queue*) malloc(sizeof(Queue));
q->arr = (int*) malloc (sizeof(int) * capacity);
q->front = 0;
q->rear = -1;
q->size = 0;
q->capacity = capacity;
return q;
}
// 判断队列是否为空
int isEmpty(Queue *q) {
return q->size == 0;
}
// 判断队列是否已满
int isFull(Queue *q) {
return q->size == q->capacity;
}
// 入队
void enqueue(Queue *q, int data) {
if (isFull(q)) {
printf("Queue is full.\n");
return;
}
q->rear = (q->rear + 1) % q->capacity;
q->arr[q->rear] = data;
q->size++;
}
// 出队
void dequeue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return;
}
q->front = (q->front + 1) % q->capacity;
q->size--;
}
// 获取队列头部元素
int front(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return -1;
}
return q->arr[q->front];
}
// 获取队列尾部元素
int rear(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty.\n");
return -1;
}
return q->arr[q->rear];
}
```
以上是队列的基本操作代码,可以通过调用这些函数来创建、操作队列。需要注意的是,队列的实现中使用了环形数组,这样可以避免数组元素移动导致的空间浪费。
阅读全文