代码拉取完成,页面将自动刷新
同步操作将从 Invalid pointer/data structure code 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#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;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。