Пример кода приложений структуры данных (желательно на Java) - PullRequest
0 голосов
/ 01 апреля 2012

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

Всякий раз, когда я сталкиваюсь с какой-либо проблемой, мой разум все еще переходит в старый режим создания массива или списка объектов, а затем решения для кодирования. (как в прежние времена, когда я переходил на ООП из программирования процедур. Но теперь я могу видеть все как объект :))

Я пытался искать в сети и также просмотрел несколько книг. Но каждая книга подана с основными алгоритмами. (напр. создание / вставка / удаление / поиск элемента в стеке, очереди, дереве и т. д. и их оценки Big O)

Я ищу реальные реализации кода некоторых реальных проблем.

1 Ответ

1 голос
/ 28 мая 2012

Вот несколько случайных примеров применения нескольких структур данных (не все они чрезвычайно реалистичны и / или практичны, я должен признать), их, конечно, много, но это должно дать некоторые указания:

  • Хеш-таблица: у вас есть большой словарь слов и определений. Пользователь может ввести слово и непосредственно увидеть его определение. Также должна быть возможность расширить словарь новыми словами.
  • Сбалансированное двоичное дерево поиска (например, красно-черное): тот же словарь; кроме этого времени, когда пользователь вводит слово, вы также хотите отобразить 10 слов в алфавитном порядке до и после него.
  • Связанный список: вы злой хакер, программирующий регистратор ключей, который слушает, как кто-то вводит пароль в поле пароля. К сожалению, этот человек, как правило, делает много опечаток и постоянно исправляет себя с помощью клавиш со стрелками, удаления и возврата. Список, о котором идет речь, содержит напечатанные символы. У вас также есть итератор, расположенный в том же месте, что и курсор, и вы используете его соответствующим образом.
  • Очередь: вы обрабатываете последовательные запросы к веб-серверу, по одному за раз. Всякий раз, когда приходит новый запрос, пока вы еще заняты другим, вы помещаете его в очередь.
  • Приоритетная очередь: вы реализуете планировщик процессов. Когда время процесса истекло, вы помещаете его в очередь и зависите от его ключа от приоритета процесса и момента остановки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...