Я думаю, вы не должны соглашаться с непониманием этих вещей, потому что они действительно фундаментальны. При этом, если вы не понимаете их, в этом нет ничего плохого. Вы можете объяснить связанный список ребенку. Так что, если ваш учитель не смог вам их объяснить, это их вина. Поэтому вам не следует тратить время на беспокойство, а пытаться найти людей, которые могут вам это объяснить. Часто сокурсник является гораздо лучшим учителем, чем преподаватель полного дня.
Думать о поездах
Представьте себе, у вас есть набор железнодорожных вагонов, где у каждого вагона достаточно места для хранения одного фрагмента данных. Каждая каретка имеет своего рода крюк на конце, который можно прикрепить к передней части другой каретки.
Это фактически дает вам связанный список:
- пустой список: поезд без вагонов (и, следовательно, без данных)
- добавление элемента: добавьте новую карету, содержащую элемент перед поездом, и прикрепите его к остальной части поезда
- удаление элемента: найдите каретку, содержащую элемент. Снимите его (вам может понадобиться кран здесь :)), зацепите каретку перед кареткой после.
- замена элемента: найдите карету, содержащую старый элемент. Замените старый элемент новым.
- вставка элемента сразу за другим: найдите каретку, содержащую элемент, после которого вы хотите вставить. Вставьте новую каретку после нее, которая соответственно подключена (мы не хотим, чтобы поезд развалился), и вставьте в нее новый элемент.
В отличие от этого, вы можете думать о массиве как о поездах с заданным количеством вагонов, которые никак нельзя переставить. Все, что вы можете сделать, это изменить данные в них. Эта модель также объясняет множество проблем, возникающих с массивами:
- Если вы хотите вставить один элемент перед другим, вам придется переместить все следующие элементы в следующую каретку.
- Если вы хотите удалить один элемент, вам нужно переместить все следующие элементы на одну каретку вперед.
- Если вам нужен поезд с большим количеством вагонов, вам придется построить новый, потому что вы не можете просто подготовить вагон. С другой стороны, найти каретки в массиве намного проще, потому что вы можете просто нумеровать их постоянно (их порядок никогда не изменится).
Что касается стека: «стек» - это не структура данных, а идея. Идея стека заключается в том, что он действует как стопка книг. Вы можете только положить книги сверху стопки, и вы можете когда-либо только вынимать верхнюю книгу из стопки (по крайней мере, если книги достаточно тяжелые).
При этом связанный список можно использовать как стопку, если вы рассматриваете данные в каретках как книги, а книгу в первой каретке как вершину стека.
Надеюсь, это помогло вам. Может быть, это не так. Может быть, вы больше визуального типа. В этом случае я предлагаю вам найти кого-то, кто способен давать визуальные объяснения, и объяснить вам это. Это не займет много времени, но оно того стоит.
Теперь можно бороться с этим. Но просто принять это, не вариант в долгосрочной перспективе.