kariricode/data-structure

KaririCode DataStructure 组件提供了高级的 PHP 数据结构,包括列表、栈、队列、映射和集合。它具有高效的强类型面向对象实现,如 ArrayList、LinkedList、BinaryHeap 和 TreeMap。

v1.0.1 2024-09-27 14:45 UTC

This package is auto-updated.

Last update: 2024-09-27 15:14:38 UTC


README

en pt-br

PHP Composer Data Structures

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 文件。

支持和社区

由 KaririCode 团队用 ❤️ 构建。由 Walmir Silva 维护 - walmir.silva@kariricode.org