Обсуждение статьи "От начального до среднего уровня: Очереди, списки и деревья (III)"

 

Опубликована статья От начального до среднего уровня: Очереди, списки и деревья (III):

В этой статье мы сделаем следующий шаг в понимании того, что такое связный список и как он работает. Хотя содержание данной статьи может показаться довольно сложным и запутанным для новичков, я постараюсь объяснить его максимально доступным языком. Это поможет вам понять, почему и когда следует использовать связные списки.

Функция ArrayInsert из библиотеки MQL5 предназначена для вставки новых данных в существующий массив. Пока всё хорошо. Однако у этой функции есть одна небольшая особенность: когда мы вставляем новые данные в конец уже существующего массива, данные просто копируются внутрь массива. По сути, это эквивалентно использованию функции ArrayCopy.

Однако, когда мы хотим добавить элементы в середину существующего массива или в начало того же массива, происходит нечто иное. В этом случае функция ArrayInsert выделит новый блок памяти, а затем скопирует некоторые элементы в этот новый блок. Это добавит новые элементы, которые мы вставили в недавно назначенный блок. Только после этого он скопирует оставшуюся часть исходного массива внутрь выделенного блока. Следовательно, при использовании очень большого массива время выполнения может быть довольно длительным. Однако, учитывая особенности современных материнских плат и шину данных, перемещаемые блоки должны быть действительно большими, чтобы разница была заметна. Или, как минимум, нам нужно выполнить несколько вставок, чтобы время обработки можно было ощутить.

Однако в начале эры компьютеров обработка данных не была столь быстрой. Шина данных работала медленно, и эти перемещения, даже с небольшим количеством элементов, требовали много времени. Таким образом, инженеры и ученые разработали решение данной проблемы. И это решение — именно списки. А теперь вернёмся к вопросу о коде 01. Когда список будет полностью сформирован, в памяти останется нечто подобное тому, что показано ниже:

Автор: CODE X