Практика языка C (МФТИ, 2023-2024). Семинар 4.3. Структуры данных.
Вставка
- Опубліковано 13 чер 2024
- Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики.
На этом занятии мы завершим первый семестр знакомства с основами языка C и разберём многомодульные программы и структуры данных.
Семинарист: Константин Владимиров.
Дата: 15 декабря 2023 года.
Съёмка: Марк Гончаров.
Звук: Юлий Тарасов.
Предыдущий семинар: • Практика языка C (МФТИ...
Следующий семинар: • Практика языка C (МФТИ...
Слайды к занятиям: cs.mipt.ru/wp/?page_id=7775
Примеры кода: github.com/tilir/c-graduate
Задачник: olymp1.vdi.mipt.ru/
Timeline
00:00 Хеш-таблицы.
15:10 Алгоритм Рабина-Карпа.
22:30 Range-based queries и снова о деревьях.
29:42 Многомодульные программы.
36:30 Структуры данных.
42:40 Литература и задачи.
44:45 Демонстрация многомодульных программ.
Errata:
* Пока пусто
Обожаю ваши лекции, они вдохновляют )
хотелось бы узнать будет ли выкладываться продолжение курса, и если да, то где именно. спасибо!
Так сейчас каникулы. Начнутся занятия и снова начну выкладывать ))
По идее static и для функции и для переменной обозначают одно и то же - ограничение области видимости глобальной переменной или функции, но поскольку функцию нельзя определять внутри другой функции то у неё остаётся только один вариант - ограничение области видимости модулем, а для переменной эта область может быть ограничена ещё видимостью только внутри функции.
Вы смешиваете область видимости и класс линковки.
@@tilir запомнить проще.
Константин Игоревич, ваш задачник закрыт для входа, так и должно быть?
Там довольно простая регистрация. Я верю вы разберётесь.
@@tilir имел ввиду, что теперь ссылка под вашими роликами перенаправляет на портал вуза, а не на задачник. ссылка не рабочая
Она рабочая. Просто она http, а ваш браузер её незаметно для вас меняет на https. А вот https уже ведёт куда попало.
@@tilir спасибо! понял
Константин Игоревич, подскажите пожалуйста, почему на 11:25 вы используете сдвиг? Т.е. ранее вы приводили в пример хеш-функцию, использующую остаток от деления многочлена на простое число по модулю мощности хеша, ну т.е. в реализации я ожидал увидеть всё то же деление на простое число (к слову, деление на константу, что довольно эффективно), а также наложение маски вида ((1
Тоже не понял этот момент, ожидал увидеть маску. Выглядит как косяк.
Например m=2, w=64, a=1, b=0, тогда все x до 2^62+1 будут попадать в первый бакет?
Здесь должно быть 2 сдвига - сначала на (w - M) влево, затем на (w- M) вправо - вместо одного как на слайде (думаю, просто опечатка).
((a * x + b) > (w - M).
Например, w = 32, M = 20:
((a * x + b) > 12
Т.е. мы сначала сдвигаем влево. "стирая" 12 старших ("левых") бит (заодно заполняя младшие/"правые" 12 бит нулями), а затем сдвигом вправо (обратно) возвращаем значащие биты в исходную позицию, имея "слева" 12 нулей.
Это будет аналогично делению по модулю на 2 в степени (w - M) или битового "И" с маской из М единиц "справа"
@@bw7123 m -- желаемая мощность. В вашем примере вы выбрали мощность хэша 2 -- не удивительно что все попадают в один или два бакета =)
У вас си, а у нас по орг зачёт щас будет(( почему не прога( или математика(((
Что такое орг? ))
Основы российской государственности. До сих пор сижу жду пока очередь дойдёт до меня. Делать нечего(( грустно и скучно