Когда я начал свое путешествие в области разработки программного обеспечения, мне пришлось лично выяснить, как понимать иностранные или сложные идеологии и концепции. У меня нет технического образования, в школе я попал на гуманитарно-художественные. Это может быть препятствием, когда вы пытаетесь осмыслить интегральные процессы или концепции программирования, такие как рекурсия, и реализовать такой пример, как последовательность Фибоначчи.

Помощь!!! Как я это понимаю?

Лично я обнаружил, что для понимания концепций достаточно взглянуть на сам код и на примеры. Фундаментальное понимание было просто невозможно таким образом для меня. Я мог бы использовать код или реализовать концепцию, но я не понимал, как я пришел к выводу.

Я обнаружил, что мой личный стиль обучения в колледже и на работе позволяет преподавать или объяснять что-то кому-то еще, чтобы полностью понять эту концепцию.

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

Что сработало для меня

Итак, структуры данных… вау. Именно в этот момент я понял, что буду подходить к этому методично и с планом. Так что мой план состоял в том, чтобы объяснить концепцию самому себе, используя реальный жизненный опыт. Я просто поделюсь тем, что я сделал со связанным списком, стеком и очередью.

Связанный список

С чего начать — первое, о чем я подумал, когда мне представили Linked List. Там была голова, хвост и какой-то указатель, но голова может быть и хвостом и т. д. ЧТО?! Поэтому я решил сделать шаг назад, прежде чем мой мозг спонтанно взорвется, и подумать о нашей повседневной жизни и о том, чему может быть аналогичен связанный список.

Это поразило меня, это полностью похоже на поезд! Я ездил на многих поездах, поэтому аналогия пришла быстро, особенно когда речь идет о двигателе поезда или просто о том, как работают поезда. Название «Cabengine» само собой пришло к нам с другом, когда мы обсуждали связанный список. Cabengine относится к связанному списку, когда ваша голова также является вашим хвостом. Паровоз может управлять поездом, одновременно являясь его концом. Бум! Момент лампочки. Сцепка поезда — это наш указатель, говорящий нам, что будет дальше. Если у нас нет другого вагона поезда и у нашего поезда нет следующего, у него все еще есть указатель (наша сцепка), он просто не определен, потому что наш паровоз не подключен к вагону или вагону. Это Linked List как поезд.

Стек и очередь

Stack и Queue имеют общие аналогии, которые люди использовали в течение многих лет для описания этих двух. Две «простые» вещи, которые нам нужно знать об этих двух структурах. Стек следует модели LIFO (последним пришел — первым обслужен), а очередь — FIFO (первым пришел — первым обслужен)… нет, это не опечатка в слове жизнь или ваша первая собака. Если вы понимаете метод, которому они следуют, вам будет легче понять их как структуры.

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

Чтобы понять Queue, мы должны думать, как наши соседи по ту сторону океана. Они часто называют линии очередью. Это имеет огромный смысл в том, как работает эта очередь. Допустим, вы и ваш друг посещаете премьеру фильма, это популярный фильм, поэтому вам нужно ждать в очереди, прежде чем они даже откроют двери. Ваш друг впереди вас в очереди, а вы сразу за ним. Ему нужно пойти купить начос и выпить для фильма, он выходит из очереди, и вы занимаете его место. Первое место в очереди не исчезло, вы просто заняли его место. Когда он вернется, он снова будет на первом месте, и он будет первым, кто «выйдет» в фильм, потому что он был первым.