-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_basic.php
More file actions
69 lines (60 loc) · 2.06 KB
/
Copy pathtest_basic.php
File metadata and controls
69 lines (60 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
require_once 'vendor/autoload.php';
use DataStructures\Linear\ArrayList;
use DataStructures\Linear\Stack;
use DataStructures\Tree\BinarySearchTree;
use DataStructures\Hash\HashTable;
use DataStructures\Advanced\LRUCache;
echo "=== PHP 数据结构库基础测试 ===\n\n";
// 测试 ArrayList
echo "1. ArrayList 测试:\n";
$list = new ArrayList();
$list->add(1);
$list->add(2);
$list->add(3);
echo " 添加元素: [1, 2, 3]\n";
echo " 大小: {$list->size()}\n";
echo " 获取索引1: {$list->get(1)}\n";
echo " 包含2: " . ($list->contains(2) ? '是' : '否') . "\n\n";
// 测试 Stack
echo "2. Stack 测试:\n";
$stack = new Stack();
$stack->push('A');
$stack->push('B');
$stack->push('C');
echo " 压入元素: [A, B, C]\n";
echo " 栈顶: {$stack->peek()}\n";
echo " 弹出: {$stack->pop()}\n";
echo " 新栈顶: {$stack->peek()}\n\n";
// 测试 BST
echo "3. BinarySearchTree 测试:\n";
$bst = new BinarySearchTree();
$values = [50, 30, 70, 20, 40];
foreach ($values as $val) {
$bst->insert($val);
}
echo " 插入元素: [" . implode(', ', $values) . "]\n";
echo " 中序遍历: [" . implode(', ', $bst->inorderTraversal()) . "]\n";
echo " 搜索30: " . ($bst->search(30) ? '找到' : '未找到') . "\n\n";
// 测试 HashTable
echo "4. HashTable 测试:\n";
$hash = new HashTable();
$hash->put('name', 'Alice');
$hash->put('age', 25);
$hash->put('city', 'Beijing');
echo " 添加键值对: name=Alice, age=25, city=Beijing\n";
echo " 获取name: {$hash->get('name')}\n";
echo " 包含age: " . ($hash->containsKey('age') ? '是' : '否') . "\n";
echo " 大小: {$hash->size()}\n\n";
// 测试 LRU Cache
echo "5. LRUCache 测试:\n";
$cache = new LRUCache(3);
$cache->put('key1', 'value1');
$cache->put('key2', 'value2');
$cache->put('key3', 'value3');
echo " 添加3个缓存项\n";
echo " 当前键: [" . implode(', ', $cache->keys()) . "]\n";
$cache->put('key4', 'value4'); // 这会淘汰 key1
echo " 添加key4后: [" . implode(', ', $cache->keys()) . "]\n";
echo " 获取key2: {$cache->get('key2')}\n\n";
echo "=== 所有测试完成! ===\n";