Что ж! День 2/2 в новом году последовательного изучения CS50. Бесчисленные часы путаницы. Думаю, я только что смирился с тем, что мне придется тщательно изучить каждую часть каждой проблемы, чтобы понять, что происходит. Что займет часы. Угадай, как ты учишься, а?

(Примечание: это только для функции «загрузки» набора задач 5):

Сегодняшний важный урок состоял в том, чтобы понять, что такое Trie. Я начал часами работать над набором задач 5, не сделав сначала шага назад и по-настоящему не понимая структуру данных, которую я пытался построить.

Как оказалось, trie — это просто тип данных, состоящий из пар ключ-значение (так же, как мой хороший друг в Ruby — хэш). В этом уроке также были рассмотрены хэш-таблицы, тип данных, который также состоит из пар ключ-значение. (Примечание: я не мог сказать, были ли хеш-таблицы в C такими же, как хэши в Ruby (или словари в Python), но они казались достаточно похожими? Если кто-то знает, не стесняйтесь оставлять дружеские комментарии :)). Однако разница между хеш-таблицами и попытками заключается в том, уникальны ли ключи. Хэш-таблицы не имеют уникальные ключи (т. е. несколько значений могут иметь один и тот же ключ), тогда как попытки имеют. (Хм, я думаю, хеш-таблицы не могут быть такими же, как хэши Ruby, поскольку ключи Ruby уникальны. Ответ на вопрос!).

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

Как только я в этом разобрался, путь стал ясен как день.

лол нет не было

Другая концепция, которую я не совсем понял, заключалась в том, что представлял каждый фактический узел дерева. Опять же, я думаю, что пытался вставить значения (буквы) в фактические узлы, но единственными данными, содержащимися в узлах, были 1) логическое значение, определяющее, является ли сам этот узел концом этого слова, и 2) набор из 27 указатели, указывающие на другие узлы. Так что это просто длинный ряд указателей, указывающих на следующего парня.

Я правильно понял?

(Моя третья проблема заключалась в том, что я не использовал узел «путешествующий»/временный указатель, чтобы следовать за словом по его собственной дорожной карте, но я не буду вдаваться в подробности).

Я желаю моменту лампочки Дэвида Малана, что «Указатели — это просто адреса!» были такими простыми. Я не уверен, смогу ли я когда-либо полностью понять указатели в какой-либо момент (ха) в моей жизни.

Так или иначе. Голова все еще кружится, так что пойду отдыхать.

Увидимся в следующий раз!