Я беру второй курс по Java. Мы входим в структуры данных. Я сделал назначение в связанном списке, а теперь и в стеке. Мне было трудно со связанным списком. Стек доставил мне немного хлопот, но было намного проще.
Должен ли я беспокоиться о трудностях с этими алгоритмами и структурами данных? Я просто чувствую, что на самом деле не понял этого.
algorithms
data-structures
барсук
источник
источник
Ответы:
Я думаю, вы не должны соглашаться с непониманием этих вещей, потому что они действительно фундаментальны. При этом, если вы не понимаете их, в этом нет ничего плохого. Вы можете объяснить связанный список ребенку. Так что, если ваш учитель не смог вам их объяснить, это их вина. Поэтому вам не следует тратить время на беспокойство, а пытаться найти людей, которые могут вам это объяснить. Часто сокурсник является гораздо лучшим учителем, чем преподаватель полного дня.
Думать о поездах
Представьте себе, у вас есть набор железнодорожных вагонов, где у каждого вагона достаточно места для хранения одного фрагмента данных. Каждая каретка имеет своего рода крюк на конце, который можно прикрепить к передней части другой каретки.
Это фактически дает вам связанный список:
В отличие от этого, вы можете думать о массиве как о поездах с заданным количеством вагонов, которые никак нельзя переставить. Все, что вы можете сделать, это изменить данные в них. Эта модель также объясняет множество проблем, возникающих с массивами:
Что касается стека: «стек» - это не структура данных, а идея. Идея стека заключается в том, что он действует как стопка книг. Вы можете только положить книги сверху стопки, и вы можете когда-либо только вынимать верхнюю книгу из стопки (по крайней мере, если книги достаточно тяжелые).
При этом связанный список можно использовать как стопку, если вы рассматриваете данные в каретках как книги, а книгу в первой каретке как вершину стека.
Надеюсь, это помогло вам. Может быть, это не так. Может быть, вы больше визуального типа. В этом случае я предлагаю вам найти кого-то, кто способен давать визуальные объяснения, и объяснить вам это. Это не займет много времени, но оно того стоит.
Теперь можно бороться с этим. Но просто принять это, не вариант в долгосрочной перспективе.
источник
Я бы не сказал, что вы «должны беспокоиться» об этом, но простой факт, что вы признаете свои слабые стороны, показывает, что вы точно знаете, где учиться усерднее. Я думаю, что вы будете хорошо обслуживать это отношение и в конечном итоге все будет в порядке.
источник
Процитирую мою любимую учительницу CSCI:
Структуры данных звучат сложно, верно? Для меня это звучит абстрактно и немного сложно, а главное ... важно!
Структуры данных - жизненно важный курс. И бороться обычно, но продолжай! Пока вы едите пшеницу и держитесь за нее, вы достигнете радуги с
bag
наполненнымgeneric items
снизу.источник
Очень хорошие моменты в других ответах, только одно примечание, чтобы добавить: связанные списки IMO могут быть более сложными, чем, например, стеки для многих людей, потому что они основаны на косвенном обращении (выраженном через ссылки / указатели ). И эти основополагающие концепции может быть трудно понять .
источник
Data Structures был первым «сложным» классом, который я выбрал; мы использовали Fortran 77 вместо Java, но концепции в основном совпадают.
Мне потребовалась неделя больше, чем моим одноклассникам, чтобы понять концепцию связанного списка; Я сдал задание, но после пары немного разочаровывающих сессий с моим профессором, оно наконец щелкнуло (буквально; я услышал «щелчок» в моей голове, когда я наконец понял).
У всех есть проблемы где-то в их программе CS (если они не уроды). Если вы понимаете, где ваши слабые стороны и как их устранить, вам действительно не о чем беспокоиться.
источник
Были ли у вас проблемы с пониманием связанного списка или просто проблемы с вашей реализацией?
Для новичка нередко возникают трудности, потому что вы можете впервые подумать о том, что это на самом деле означает, когда вы пишете:
Я запутался в ALGOL / W в одном и том же упражнении, потому что я не совсем понимал семантику языка. Год спустя я едва мог вспомнить, почему у меня были трудности.
источник
Там должны быть некоторые области разработки программного обеспечения, которые вы находите сложнее, чем другие. Будь то определенные алгоритмы, или определенные шаблоны проектирования или определенные процедуры, будет варьироваться от человека к человеку. Я считаю, что мне нужно использовать что-то в реальной программе, прежде чем я полностью пойму это.
Я был бы более обеспокоен, если бы кто-то утверждал, что знает все это и никогда не испытывал проблем с изучением чего-либо.
Лично у меня никогда не было проблем со связанными списками, но потом я работал над программой в течение 8 лет, которая использовала их повсюду, поэтому я работал с ними ежедневно. Если вы знаете, где найти информацию, которая вам нужна, чтобы освежить вашу память, и знаете области, в которых у вас есть «проблемы», у вас должно быть все в порядке.
источник
У меня были проблемы с исчислением, и мне пришлось принять его во второй раз. Во второй раз я обнаружил, что я умный, но первый учитель математики был в основном бесполезен :)
В ИТ вы найдете много людей, которые не могут хорошо общаться, даже учителя. С другой стороны, некоторые люди в IT - действительно великие писатели и мастера общения.
Иногда внешнее чтение может действительно помочь. Компьютерные книги сильно различаются по качеству. Зайдите на Amazon и посмотрите, какие книги нравятся людям.
Удачи.
источник