c语言实现顺序循环队列的基本操作
时间: 2023-12-07 17:01:29 浏览: 105
顺序循环队列是一种非常常见的数据结构,下面是 C 语言实现顺序循环队列的基本操作的代码示例:
```c
#define MAXSIZE 100 // 定义最大队列长度
typedef struct {
int data[MAXSIZE]; // 存放队列元素的数组
int front; // 队头指针
int rear; // 队尾指针
} SqQueue;
// 初始化队列
void InitQueue(SqQueue *q) {
q->front = q->rear = 0;
}
// 判断队列是否为空
int QueueEmpty(SqQueue q) {
return q.front == q.rear;
}
// 判断队列是否已满
int QueueFull(SqQueue q) {
return (q.rear + 1) % MAXSIZE == q.front;
}
// 入队列
int EnQueue(SqQueue *q, int x) {
if (QueueFull(*q)) {
return 0; // 队列已满
} else {
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
return 1;
}
}
// 出队列
int DeQueue(SqQueue *q, int *x) {
if (QueueEmpty(*q)) {
return 0; // 队列为空
} else {
*x = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
return 1;
}
}
// 获取队头元素
int GetHead(SqQueue q, int *x) {
if (QueueEmpty(q)) {
return 0; // 队列为空
} else {
*x = q.data[q.front];
return 1;
}
}
```
使用示例:
```c
int main() {
SqQueue q;
InitQueue(&q);
EnQueue(&q, 1);
EnQueue(&q, 2);
EnQueue(&q, 3);
int x;
DeQueue(&q, &x);
printf("%d\n", x); // 输出 1
GetHead(q, &x);
printf("%d\n", x); // 输出 2
return 0;
}
```
阅读全文