增加queue遍历功能函数

This commit is contained in:
2025-08-15 14:16:46 +08:00
parent 10109e989a
commit ea8683c040
3 changed files with 25 additions and 14 deletions

View File

@@ -12,15 +12,8 @@
#include <stdio.h>
void print_queue(const queue_t *queue) {
printf("Queue(size=%zu): ", queue_length(queue));
for (size_t i = 0; i < queue_length(queue); ++i) {
int val;
queue_peek_at(queue, i, &val);
printf("%d ", val);
}
printf("\n");
void print_int(void *data, size_t idx) {
printf("Index %zu: %d\n", idx, *(int *)data);
}
int main(void) {
@@ -37,7 +30,7 @@ int main(void) {
ret = queue_enqueue(&q, &i);
printf("Enqueue %d: %s\n", i, ret ? "OK" : "FAIL");
}
print_queue(&q);
queue_foreach(&q, print_int);
// 查询第3个元素
int val = 0;
@@ -51,23 +44,23 @@ int main(void) {
printf("Dequeue head: %d\n", val);
}
}
print_queue(&q);
queue_foreach(&q, print_int);
// 从尾部出队
if (queue_dequeue_tail(&q, &val)) {
printf("Dequeue tail: %d\n", val);
}
print_queue(&q);
queue_foreach(&q, print_int);
// 抛弃前3个
size_t dropped = queue_drop_head(&q, 3);
printf("Drop head 3, actually dropped: %zu\n", dropped);
print_queue(&q);
queue_foreach(&q, print_int);
// 抛弃尾部10个超出队列长度实际清空
dropped = queue_drop_tail(&q, 10);
printf("Drop tail 10, actually dropped: %zu\n", dropped);
print_queue(&q);
queue_foreach(&q, print_int);
// 销毁队列
queue_destroy(&q);