Files
list/src/main.c

70 lines
1.6 KiB
C
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @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>
void print_int(void *data, size_t idx) {
printf("Index %zu: %d\n", idx, *(int *)data);
}
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");
}
queue_foreach(&q, print_int);
// 查询第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);
}
}
queue_foreach(&q, print_int);
// 从尾部出队
if (queue_dequeue_tail(&q, &val)) {
printf("Dequeue tail: %d\n", val);
}
queue_foreach(&q, print_int);
// 抛弃前3个
size_t dropped = queue_drop_head(&q, 3);
printf("Drop head 3, actually dropped: %zu\n", dropped);
queue_foreach(&q, print_int);
// 抛弃尾部10个超出队列长度实际清空
dropped = queue_drop_tail(&q, 10);
printf("Drop tail 10, actually dropped: %zu\n", dropped);
queue_foreach(&q, print_int);
// 销毁队列
queue_destroy(&q);
printf("Queue destroyed.\n");
return 0;
}