kariricode / data-structure
KaririCode DataStructure 组件提供了高级的 PHP 数据结构,包括列表、栈、队列、映射和集合。它具有高效的强类型面向对象实现,如 ArrayList、LinkedList、BinaryHeap 和 TreeMap。
v1.0.1
2024-09-27 14:45 UTC
Requires
- php: ^8.3
- kariricode/contract: ^2.0
Requires (Dev)
- enlightn/security-checker: ^2.0
- friendsofphp/php-cs-fixer: ^3.58
- mockery/mockery: ^1.6
- nunomaduro/phpinsights: ^2.11
- phpunit/phpunit: ^10.5
- squizlabs/php_codesniffer: ^3.10
This package is auto-updated.
Last update: 2024-09-27 15:14:38 UTC
README
KaririCode 数据结构 组件提供了一组用 PHP 实现的高级数据结构,采用强类型和面向对象原则设计。它包括动态数组、链表、堆、队列、映射、集合和栈等常见结构的实现。
特性
- ArrayList:一个动态数组,提供快速的访问和添加元素的平均 O(1) 复杂度。
- LinkedList:一个双链表,两端插入和删除操作的平均复杂度为 O(1),任意索引访问的复杂度为 O(n)。
- BinaryHeap:一个二叉堆(最小堆或最大堆),插入、删除和弹出的复杂度为 O(log n)。
- HashMap:一个基于哈希的映射,提供平均 O(1) 复杂度的 put、get 和 remove 操作。
- TreeMap:一个自平衡的红色-黑色树映射,put、get 和 remove 操作的时间复杂度为 O(log n)。
- TreeSet:一个基于
TreeMap
的集合实现,确保元素按顺序存储。 - ArrayDeque:一个使用循环数组的双端队列,两端操作的平均复杂度为 O(1)。
- ArrayStack:一个使用动态数组实现的栈,push、pop 和 peek 操作的复杂度为 O(1)。
安装
要安装 KaririCode DataStructure 组件,请使用以下命令
composer require kariricode/data-structure
基本用法
ArrayList 示例
use KaririCode\DataStructure\Collection\ArrayList; $list = new ArrayList(); $list->add("Item 1"); $list->add("Item 2"); echo $list->get(0); // Outputs: Item 1
LinkedList 示例
use KaririCode\DataStructure\Collection\LinkedList; $linkedList = new LinkedList(); $linkedList->add("First"); $linkedList->add("Second"); $linkedList->remove("First");
BinaryHeap 示例
use KaririCode\DataStructure\Heap\BinaryHeap; $heap = new BinaryHeap(); $heap->add(10); $heap->add(5); $heap->add(20); echo $heap->poll(); // Outputs: 5 (min-heap by default)
HashMap 示例
use KaririCode\DataStructure\Map\HashMap; $map = new HashMap(); $map->put("key1", "value1"); echo $map->get("key1"); // Outputs: value1
TreeSet 示例
use KaririCode\DataStructure\Set\TreeSet; $set = new TreeSet(); $set->add("value1"); $set->add("value2"); echo $set->contains("value1"); // Outputs: true
ArrayStack 示例
use KaririCode\DataStructure\Stack\ArrayStack; $stack = new ArrayStack(); $stack->push("First"); $stack->push("Second"); echo $stack->peek(); // Outputs: Second $stack->pop(); // Removes "Second"
ArrayDeque 示例
use KaririCode\DataStructure\Queue\ArrayDeque; $deque = new ArrayDeque(); $deque->addFirst("First"); $deque->addLast("Last"); echo $deque->peekLast(); // Outputs: Last $deque->removeLast(); // Removes "Last"
测试
要运行 KaririCode DataStructure 组件的测试,请执行以下命令
make test
许可
本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。
支持和社区
- 文档:https://kariricode.org
- 问题跟踪器:GitHub Issues
- 社区:KaririCode Club 社区
- 专业支持:如需企业级支持,请联系我们 support@kariricode.org
由 KaririCode 团队用 ❤️ 构建。由 Walmir Silva 维护 - walmir.silva@kariricode.org