2024年4月11日发(作者:)
queue 结构体
在C语言中,可以使用结构体来实现队列(queue)数据结构。
一个基本的Queue结构体可以包含以下几个元素:
1. 一个数组用来存储队列元素,例如:int data[MAX_SIZE];
2. 一个整型变量用来表示队列起始位置,例如:int front;
3. 一个整型变量用来表示队列结束位置,例如:int rear。
根据这些元素,我们可以定义一个Queue结构体如下:
```c
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
} Queue;
```
在这个结构体中,`data`数组用来存储队列元素,`front`和
`rear`分别表示队列的起始和结束位置。
可以通过以下函数来实现队列的基本操作:
- `void enqueue(Queue *q, int element)`: 将`element`添加到队列
的尾部;
- `int dequeue(Queue *q)`: 移除并返回队列的头部元素;
- `int isEmpty(Queue *q)`: 判断队列是否为空;
- `int isFull(Queue *q)`: 判断队列是否已满;
- `int getFront(Queue *q)`: 返回队列的头部元素。
这些函数的具体实现可以根据需要进行修改,下面是一个简单
的示例实现:
```c
#include
#include
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
} Queue;
void enqueue(Queue *q, int element) {
if (isFull(q)) {
printf("Queue is fulln");
return;
}
q->rear = (q->rear + 1) % MAX_SIZE;
q->data[q->rear] = element;
}
int dequeue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is emptyn");
return -1;
}
int frontElement = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
return frontElement;
}
int isEmpty(Queue *q) {
return q->front == q->rear;
}
int isFull(Queue *q) {
return (q->rear + 1) % MAX_SIZE == q->front;
}
int getFront(Queue *q) {
if (isEmpty(q)) {
printf("Queue is emptyn");
return -1;
}
return q->data[q->front];
}
int main() {
Queue q;
= = 0;
enqueue(&q, 10);
enqueue(&q, 20);
enqueue(&q, 30);
printf("Front element: %dn", getFront(&q));
printf("Dequeued: %dn", dequeue(&q));
printf("Dequeued: %dn", dequeue(&q));
printf("Dequeued: %dn", dequeue(&q));
return 0;
}
```
这个示例演示了如何使用队列来存储整数元素。注意,队列的
最大大小由`MAX_SIZE`宏定义控制。在示例中,队列的最大
大小被设置为100。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1712845592a2133379.html
评论列表(0条)