Зачем изучать структуры данных на C?
Потому что C ничего не скрывает. Без встроенных списка, словаря и очереди вы реализуете каждую структуру из блоков памяти и указателей, а структура именно из этого и состоит. После этого HashMap в Java и dict в Python оказываются теми же идеями, только управление памятью за вас уже сделано, и вы можете рассуждать о том, сколько они стоят.
Что нужно знать, прежде чем изучать структуры данных на C?
Указатели, структуры, массивы, а также malloc и free. Прежде всего указатели: связный список представляет собой цепочку полей struct node *next, а в двоичном дереве таких полей по два на узел. Если указатели пока даются неуверенно, курс C от Coddy сначала бесплатно разберёт их.
Как реализовать хеш-таблицу на C?
С помощью массива корзин, хеш-функции, которая превращает ключ в индекс, и правила для двух ключей, попавших в одну корзину: обычно это связный список в каждой корзине (метод цепочек) или поиск следующей свободной ячейки (пробирование). Когда таблица заполняется сверх заданного коэффициента загрузки, вы выделяете массив побольше и заново вставляете все элементы. Курс по хеш-таблицам на первом шаге строит такую таблицу с нуля.
Подходит ли C для собеседований по программированию?
Вне встраиваемых и системных ролей мало кто проходит собеседования на C, ведь хеш-таблица, написанная с нуля посреди собеседования, отнимает время, которое другие языки дают даром. Зато знания переносятся полностью, а до C++ всего один небольшой шаг: тот же синтаксис плюс STL. Частый путь: изучить структуры на C, а наборы задач с собеседований пройти на C++, Java или Python, и все три варианта этот путь предлагает.
Какие курсы этого пути не преподаются на C?
Три: динамическое программирование и серия по интервью на Python преподаются на Python, а битовые операции на C++. Они перечислены после шагов, каждый со ссылкой, которая открывает курс на его собственном языке. Битовые операции проще всего из трёх понять, зная C: C++ сохранил операторы C &, |, ^, ~, << и >> в точности такими, какие они есть.
Изучать структуры данных на C или на C++?
На C, чтобы понять структуры, на C++, чтобы ими пользоваться. На C вы строите всё сами, поэтому так много вузовских программ преподают этот предмет на нём; на C++ вы пишете каждую структуру один раз, а затем берёте готовое из STL, поэтому им и пользуются спортивные программисты. Начав с C и перейдя на C++, вы ничего не теряете.