adrianschubek / structures
基本线性结构与树结构
1.1
2020-07-25 20:20 UTC
Requires
- php: >=7.4
- ext-json: *
- adrianschubek/comparable: ^1.0
Requires (Dev)
- phpunit/phpunit: ^8.4
- symfony/var-dumper: ^5.0
This package is auto-updated.
Last update: 2024-09-26 05:24:45 UTC
README
此包引入了多种新的数据结构,例如树、列表和包装器。
数据结构
- 线性
- 队列
- 双端队列
- 栈
- 列表
- 树
- 二叉树
- 二叉搜索树
- 包装器
- 字符串包装器
- 整数包装器
- 浮点数包装器
开始使用
composer require adrianschubek/structures
示例
查看/tests
目录获取更多示例。
队列
use adrianschubek\Structures\Linear\Queue; $queue = new Queue(); $queue->enqueue("Berlin"); $queue->enqueue("Munich"); $queue->enqueue("Cologne"); $queue->dequeue(); $arr = $queue->toArray(); // ==> ["Munich", "Cologne"]
列表
use adrianschubek\Structures\Linear\DynamicList; $list = new DynamicList(); $list->append("Berlin"); $list->append("Munich"); $list->append("Cologne"); $list2 = new DynamicList(); $list2->append("Düsseldorf"); $list2->append("Essen"); $list->concat($list2); // ==> ["Berlin", "Munich", "Cologne", "Düsseldorf", "Essen"]
use adrianschubek\Structures\Linear\DynamicList; $list = new DynamicList([ "Berlin", "Munich", "Cologne" ]); $list2 = new DynamicList([ "Munich", "Cologne" ]); $diff = $list->diff($list2); // ==> ["Berlin"]
双端队列
use adrianschubek\Structures\Linear\Deque; $deque = new Deque([ "Berlin", "Munich", "Cologne" ]); $deque->pop(); $ele = $deque->last(); // ==> "Munich"
二叉树
use adrianschubek\Structures\Tree\BinaryTree; $tree = new BinaryTree("Berlin"); $tree->setLeftTree(new BinaryTree("Hamburg")); $tree->setRightTree(new BinaryTree("Munich")); $ele = $tree->getLeftTree()->getContent(); // ==> "Hamburg"
二叉搜索树
use adrianschubek\Structures\Tree\BinarySearchTree; use adrianschubek\Structures\Wrapper\StringWrapper; $tree = new BinarySearchTree("Berlin"); $tree->insert(new StringWrapper("Hamburg")); $tree->insert(new StringWrapper("Munich")); $tree->insert(new StringWrapper("Frankfurt")); // OR $tree = BinarySearchTree::fromArray(["Berlin", "Hamburg", "Munich", "Frankfurt"]); // OR $tree = BinarySearchTree::fromString("Berlin,Munich,Frankfurt,Hamburg"); $tree->search(new StringWrapper("Frankfurt")); // ==> "Frankfurt" $tree->search(new StringWrapper("Mainz")); // ==> null