Files
list/src/main.c

70 lines
1.6 KiB
C
Raw Normal View History

2025-08-15 14:04:04 +08:00
/**
* @file main.c
* @author guishenking (guishenking@outlook.com)
* @brief
* @version 0.1
* @date 2025-08-15
*
* @copyright Copyright (c) 2025
*
*/
#include "queue.h"
#include <stdio.h>
2025-08-15 14:16:46 +08:00
void print_int(void *data, size_t idx) {
printf("Index %zu: %d\n", idx, *(int *)data);
2025-08-15 14:04:04 +08:00
}
int main(void) {
queue_t q;
int ret;
// 初始化队列存储int类型
if (!queue_init(&q, sizeof(int))) {
printf("Init failed!\n");
return -1;
}
// 入队
for (int i = 1; i <= 10; ++i) {
ret = queue_enqueue(&q, &i);
printf("Enqueue %d: %s\n", i, ret ? "OK" : "FAIL");
}
2025-08-15 14:16:46 +08:00
queue_foreach(&q, print_int);
2025-08-15 14:04:04 +08:00
// 查询第3个元素
int val = 0;
if (queue_peek_at(&q, 2, &val)) {
printf("Peek index 2: %d\n", val);
}
// 从头部出队
for (int i = 0; i < 2; ++i) {
if (queue_dequeue_head(&q, &val)) {
printf("Dequeue head: %d\n", val);
}
}
2025-08-15 14:16:46 +08:00
queue_foreach(&q, print_int);
2025-08-15 14:04:04 +08:00
// 从尾部出队
if (queue_dequeue_tail(&q, &val)) {
printf("Dequeue tail: %d\n", val);
}
2025-08-15 14:16:46 +08:00
queue_foreach(&q, print_int);
2025-08-15 14:04:04 +08:00
// 抛弃前3个
size_t dropped = queue_drop_head(&q, 3);
printf("Drop head 3, actually dropped: %zu\n", dropped);
2025-08-15 14:16:46 +08:00
queue_foreach(&q, print_int);
2025-08-15 14:04:04 +08:00
// 抛弃尾部10个超出队列长度实际清空
dropped = queue_drop_tail(&q, 10);
printf("Drop tail 10, actually dropped: %zu\n", dropped);
2025-08-15 14:16:46 +08:00
queue_foreach(&q, print_int);
2025-08-15 14:04:04 +08:00
// 销毁队列
queue_destroy(&q);
printf("Queue destroyed.\n");
return 0;
}