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

 

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

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

Что ж, весьма вероятно, что если вы только начинаете программировать, то остались в некотором недоумении относительно того, где и как использовать рассмотренное в предыдущей статье. Тем не менее, во многих ситуациях умение применять то, что было там рассмотрено и объяснено, может сыграть решающую роль в вашей карьере программиста. Но вы, должно быть, заметили, что и очередь типа FIFO, и циклическая очередь имеют общую черту: элементы в них всегда обрабатываются в том порядке, в котором они были помещены в очередь. То есть, самый старый элемент всегда считывается первым, и, следовательно, самый новый элемент в очереди всегда считывается последним. Однако зачастую нам необходимо изменить этот порядок на обратный. Итак, мы хотим, чтобы самый новый элемент считывался первым, а самый старый элемент в очереди — последним.

Можно даже подумать, что для этого достаточно было бы изменить порядок чтения элементов, помещенных в очередь FIFO или круговую очередь. На самом деле, в некоторых практических случаях именно так и происходит. Однако существует тип очереди, созданный специально для того, чтобы это можно было реализовать без необходимости изменять уже написанный код. Такой тип очереди, созданный специально для изменения порядка очередей, называется стеком.

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

Для тех, кто не знаком с этой игрушкой, она известна как Ханойская башня). Поверьте, эта игрушка уже использовалась в прошлом для анализа и сравнения процессоров. Это связано с тем, что существуют способы её применения для получения точной оценки скорости обработки. Однако из-за того, что многие процессоры начали оптимизироваться для ускорения работы самого алгоритма, а не реальной скорости вычислений ЦП, от этой модели сравнения в итоге отказались. Если вы хотите попробовать решить эту башню на практике, вы можете заглянуть на сайт Somatemática.


Автор: CODE X