先预留配置文件,如果后续用的上的话。

This commit is contained in:
建峰 2025-04-22 23:45:23 +08:00
parent 769f7040d2
commit 1f82b7502c
6 changed files with 58 additions and 4 deletions

View File

@ -23,6 +23,7 @@
"unity_config.h": "c",
"unity_internals.h": "c",
"stdarg.h": "c",
"graph.h": "c"
"graph.h": "c",
"unicstl_config.h": "c"
}
}

View File

@ -28,6 +28,22 @@
| **heap** | |**堆** |
| heap_init2 | 数组 | 最大堆/最小堆 |
## 特点
| 原理 | 说明 |
| --- | --- |
| 链表 | 有额外指针开销 |
| 动态数组 | 扩容时数据搬移代价较大 |
## 性能比较
|项目| 数组| 链表|
|---|---|---|
|查找| $O(1)$ | $O(n)$ |
|插入| $O(n)$ | $O(1)$ |
|删除| $O(n)$ | $O(1)$ |
**【A1】** 若链表的操作流程为,先查找元素再删除元素。那么时间复杂度确实是$O(n)$。但是链表的增删优势,在其他应用有体现。比如双向队列,插入和删除效率都为$O(1)$。
## 版本
| 版本 | 说明 |

View File

@ -11,7 +11,9 @@
#ifndef _COMMON_H_
#define _COMMON_H_
// #define NDEBUG 1
// #ifdef UNICSTL_CONFIG
#include "unicstl_config.h"
// #endif
#include <stdint.h>
#include <stdbool.h>

View File

@ -11,6 +11,8 @@
#ifndef _UNICSTL_H_
#define _UNICSTL_H_
#include "common.h"
#include "list.h"
#include "stack.h"
#include "queue.h"

33
include/unicstl_config.h Normal file
View File

@ -0,0 +1,33 @@
/**
* @file unicstl_config.h
* @author wenjf (Orig5826@163.com)
* @brief
* @version 0.1
* @date 2025-04-22
*
* @copyright Copyright (c) 2025
*
*/
#ifndef _UNICSTL_CONFIG_H_
/**
* @brief unicstl container
*
*/
#define UNICSTL_LIST
#define UNICSTL_STACK
#define UNICSTL_QUEUE
#define UNICSTL_DEQUE
#define UNICSTL_TREE
#define UNICSTL_HEAP
#define UNICSTL_GRAPH
/**
* @brief debug
*
*/
#define NDEBUG
#define UNICSTL_DEBUG
#endif

View File

@ -16,8 +16,8 @@ static void test_list_init2(void)
// ------------------------------
#ifdef NDEBUG
TEST_ASSERT_FALSE(list_init2(NULL, sizeof(int), 1));
TEST_ASSERT_FALSE(list_init2(list, 0, 1));
TEST_ASSERT_FALSE(list_init2(list, sizeof(int), 0));
TEST_ASSERT_FALSE(list_init2(&list, 0, 1));
TEST_ASSERT_FALSE(list_init2(&list, sizeof(int), 0));
#endif
TEST_ASSERT_TRUE(list_init2(&list, sizeof(int), 1));
list.destory(&list);