1 added
1 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>PHP поставляется с библиотекой, называемой<a>SPL</a>(Standard PHP Library). Кроме прочего, она содержит<a>набор классов</a>, реализующих популярные структуры данных, такие как стек или очередь.</p>
1
<p>PHP поставляется с библиотекой, называемой<a>SPL</a>(Standard PHP Library). Кроме прочего, она содержит<a>набор классов</a>, реализующих популярные структуры данных, такие как стек или очередь.</p>
2
<p>Несмотря на то, что SPL встроен в язык, конкретно к структурам данных есть множество претензий со стороны сообщества, как по производительности, так и по интерфейсам классов. Всё это вылилось в создание расширения php-ds (DS). Подробнее о нем читайте в<a>статье</a>. Библиотеку php-ds можно установить как обычный пакет<a>https://github.com/php-ds/polyfill</a>. Вся документация доступна здесь:<a>https://php.net/manual/ru/book.ds.php</a>.</p>
2
<p>Несмотря на то, что SPL встроен в язык, конкретно к структурам данных есть множество претензий со стороны сообщества, как по производительности, так и по интерфейсам классов. Всё это вылилось в создание расширения php-ds (DS). Подробнее о нем читайте в<a>статье</a>. Библиотеку php-ds можно установить как обычный пакет<a>https://github.com/php-ds/polyfill</a>. Вся документация доступна здесь:<a>https://php.net/manual/ru/book.ds.php</a>.</p>
3
<p>DS включает в себя Vector, Deque, Map, Set, Stack, Queue, PriorityQueue, Pair. Эти структуры в жизни обычного веб-разработчика нужны не каждый день, но всё же такое случается. Если вы с ними не знакомы, то имеет смысл хотя бы прочитать о них в википедии.</p>
3
<p>DS включает в себя Vector, Deque, Map, Set, Stack, Queue, PriorityQueue, Pair. Эти структуры в жизни обычного веб-разработчика нужны не каждый день, но всё же такое случается. Если вы с ними не знакомы, то имеет смысл хотя бы прочитать о них в википедии.</p>
4
<h2>Stack</h2>
4
<h2>Stack</h2>
5
-
<p>Стек - это коллекция типа "Последний вошёл, первый вышел" (Last In, First Out или LIFO), которая позволяет работать только с самым верхним (последним) значением. Итер��ция происходит от конца к началу с удалением взятого элемента.</p>
5
+
<p>Стек - это коллекция типа "Последний вошёл, первый вышел" (Last In, First Out или LIFO), которая позволяет работать только с самым верхним (последним) значением. Итерация происходит от конца к началу с удалением взятого элемента.</p>
6
<p>Методы pop() и push() составляют основной интерфейс класса. push() добавляет элемент (или элементы) на стек, pop() - снимает со стека.</p>
6
<p>Методы pop() и push() составляют основной интерфейс класса. push() добавляет элемент (или элементы) на стек, pop() - снимает со стека.</p>
7
<p>Перепишем с использованием этого стека функцию, которая разбиралась в курсе "PHP: массивы". Напомню задачу:</p>
7
<p>Перепишем с использованием этого стека функцию, которая разбиралась в курсе "PHP: массивы". Напомню задачу:</p>
8
<p>Необходимо реализовать функцию, которая проверяет, что парные символы сбалансированы. То есть каждый открывающий символ имеет закрывающий, и они не перекрываются, например, так: [{]}. К таким символам в нашем случае относятся <>, {}, (), []. Входом в функцию может быть ()<>{}. Такой пример проходит проверку, а вот этот уже нет: [({)}]. Здесь происходит перекрытие фигурных и круглых скобок.</p>
8
<p>Необходимо реализовать функцию, которая проверяет, что парные символы сбалансированы. То есть каждый открывающий символ имеет закрывающий, и они не перекрываются, например, так: [{]}. К таким символам в нашем случае относятся <>, {}, (), []. Входом в функцию может быть ()<>{}. Такой пример проходит проверку, а вот этот уже нет: [({)}]. Здесь происходит перекрытие фигурных и круглых скобок.</p>
9
<p>Объектный стиль никак не повлиял на алгоритм решения. Кода не стало меньше, он не стал проще. С другой стороны, такой подход в PHP распространен крайне широко.</p>
9
<p>Объектный стиль никак не повлиял на алгоритм решения. Кода не стало меньше, он не стал проще. С другой стороны, такой подход в PHP распространен крайне широко.</p>