1 Star 0 Fork 1

Tuchat/My Gitte repository 代码+图解

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
SQueue.c 2.57 KB
一键复制 编辑 原始数据 按行查看 历史
Invalid pointer 提交于 2023-04-06 15:29 . add SQueue.c.
#include <stdio.h>
#define MAX_SIZE 128 // 队列最大容量
typedef struct Queue {
int a[MAX_SIZE]; // 数组
int head; // 头指针
int tail; // 尾指针
int capacity; // 容量
} Queue;
// 初始化队列
void init(Queue *q, int n) {
q->head = q->tail = 0; // 初始化头、尾指针
q->capacity = n; // 设置队列容量
}
// 判断队列是否为空
int is_empty(Queue *q) {
return q->head == q->tail;
}
// 添加元素到队列尾部
int push(Queue *q, int data) {
if (q->tail == q->capacity) { // 队列已满
return -1;
}
q->a[q->tail++] = data; // 加入新的数据,并将尾指针后移
return 0;
}
// 返回队列头部元素
int front(Queue *q, int *data) {
if (is_empty(q)) { // 队列为空
return -1;
}
*data = q->a[q->head]; // 值传递返回队列首个元素值
return 0;
}
// 从队列头部弹出元素
int pop(Queue *q, int *data) {
if (is_empty(q)) { // 队列为空
return -1;
}
*data = q->a[q->head++]; // 返回队列头部元素,并将头指针后移
return 0;
}
// 修改队列指定位置的元素值
int modify(Queue *q, int index, int data) {
if (index < 0 || index >= q->tail - q->head) { // 索引越界检测
return -1;
}
q->a[q->head + index] = data; // 根据索引修改元素值
return 0;
}
int main() {
Queue q;
init(&q, MAX_SIZE);
// 添加元素到队列中
printf("Pushing elements into queue:\n");
for (int i = 0; i < 10; i++) {
if (!push(&q, i)) {
printf("%d ", i);
}
}
printf("\n");
// 查询队首元素值并输出
int data;
printf("The front element of queue is: ");
if (!front(&q, &data)) {
printf("%d\n", data);
} else {
printf("N/A\n");
}
// 删除队首元素,再查询队首元素值并输出
pop(&q, &data);
printf("Popping the front element from queue...\n");
printf("The front element of queue is currently: ");
if (!front(&q, &data)) {
printf("%d\n", data);
} else {
printf("N/A\n");
}
// 修改指定位置的元素值,并输出队列中所有元素
printf("Modifying the element at position 2 to 100...\n");
modify(&q, 2, 100);
printf("Elements in queue: ");
while (!is_empty(&q)) {
pop(&q, &data);
printf("%d ", data);
}
printf("\n");
return 0;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/tuchat/hnys.git
[email protected]:tuchat/hnys.git
tuchat
hnys
My Gitte repository 代码+图解
master

搜索帮助