Практика языка C (МФТИ, 2023-2024). Семинар 4.1. Односвязные списки.

  Рет қаралды 4,862

Konstantin Vladimirov

Konstantin Vladimirov

Күн бұрын

Практические занятия по языку C на первом курсе МФТИ. Кафедра информатики.
На этом занятии мы начнём знакомство с динамическими структурами данных и рассмотрим односвязные списки. С прошлым семинаром этот связан через идею корзинной сортировки, но это не единственный алгоритм, который мы рассмотрим.
Семинарист: Константин Владимиров.
Дата: 24 ноября 2023 года.
Съёмка: Марк Гончаров.
Звук: Юлий Тарасов.
Предыдущий семинар: • Практика языка C (МФТИ...
Следующий семинар: • Практика языка C (МФТИ...
Слайды к занятиям: cs.mipt.ru/wp/?page_id=7775
Примеры кода: github.com/tilir/c-graduate
Задачник: olymp1.vdi.mipt.ru/
Timeline
00:00 Идея односвязного списка
08:55 Корзинная сортировка
20:45 Петли в списках
30:25 Разворот списка
36:20 Время решать задачи
39:40 Разбор problem AL
01:03:00 Разбор итеративного разворота
01:10:15 Ревью одной интересной ошибки
Errata:
* Пока пусто

Пікірлер: 20
@andrewkot5212
@andrewkot5212 6 ай бұрын
Лучшие лекции по си, а позитив и увлеченность преподавателя передаются через экран и заражают!
@user-lk6pg7wo1b
@user-lk6pg7wo1b 3 ай бұрын
Благодаря этому семинару общественность узнала, как выглядят занятия физкультурой на физтехе
@tilir
@tilir 3 ай бұрын
Серьёзно? Это на какой минуте?
@user-lk6pg7wo1b
@user-lk6pg7wo1b 3 ай бұрын
@@tilirЭто я про задачу, в которой студенты в густую метель бегают по стадиону неизвестной формы, пытаясь понять, замкнутый он или нет. 21:15. Раз уж вы ответили, хочу сказать спасибо вам за эти записи!
@napalm20005
@napalm20005 Ай бұрын
14:17 А диапазоны под бакеты может должны быть такими: [0, 83] [84, 167] [168, 251] [252, 335] [336, 419] [420, 503] [504, 670]
@user-tl6eq9fs4s
@user-tl6eq9fs4s 2 ай бұрын
посмею предположить, для того чтобы вернуть длину петли, нужно определить два счётчика шагов, один для зайца и второй для черепахи , и если петля есть, т.е. заяц догнал черепаху, то вернуть разность двух счётчиков
@tilir
@tilir 2 ай бұрын
Представьте список где до петли сто элементов а сама петля два элемента. Заяц намотает полсотни петель пока черепаха дойдёт.
@stanislavstanislavius7618
@stanislavstanislavius7618 6 ай бұрын
Константин, может быть у вас уже спрашивали - могут ли домашки отсылать нестуденты?
@tilir
@tilir 6 ай бұрын
Не вижу проблем.
@Blackwell547
@Blackwell547 6 ай бұрын
где можно взять старта на эти семинары, я просто чайник в этом. Хочется у вас учится, понятным языком объясняете)) только только устанавливаю линукс убунту Спасибо за семинары!
@tilir
@tilir 6 ай бұрын
Эти семинары и есть старт. Начните с первого, никуда не торопитесь, делайте задания и в итоге всё поймёте.
@sibedir
@sibedir 4 ай бұрын
31:35 А почему для разворота списка, если есть требование "не использовать О(n) памяти", нам подходит рекурсия?
@sibedir
@sibedir 4 ай бұрын
А. Всё. Увидел. В конце итеративный способ есть.
@dmitriy3510
@dmitriy3510 6 ай бұрын
Вопрос по оформлению кода. Как лучше подходить к написанию функций. Лучше возвращать флаг успешной операции или кидать аборд? Ну например написать функцию чтения из файла, и если файла нет, возвращать из функции код 1 например и не кидать аборд. А в мейне уже обрабатывать этот флаг?
@tilir
@tilir 6 ай бұрын
Лучше аккуратно освободить ресурсы и вернуть код ошибки. Особенно если вы предполагаете что вашу программу могут использовать как библиотеку.
@kruassanorkiwi
@kruassanorkiwi 3 ай бұрын
1:11:50 Если мы в данной реализации вставим проверку на равенство после первого шага, то на первой же итерации получим true (или false, но если сначала проверим на NULL и сразу на него попадем, но все еще оба указателя будут NULL). Или я что-то не так понимаю?
@tilir
@tilir 3 ай бұрын
Да тут не так просто поправить ошибку, надо серьёзно переделывать логику. Но студент в итоге разобрался. Я скорее просто указываю на то в чём проблема логически а не рекомендую конкретного фикса.
@napalm20005
@napalm20005 6 ай бұрын
А как же cmake?
@tilir
@tilir 6 ай бұрын
А что с ним? Чтобы дойти до систем сборки нам надо как минимум дойти до многомодульных программ. Это 4.3 минимум.
@SeriousMan212
@SeriousMan212 3 ай бұрын
1:10:35 Утверждается, что тут ошибка у студента из-за того, что заяц перепрыгнет иногда черепаху и лишний круг сделает. Я не согласен и вот почему. Пусть t_0 -- длина маршрута до цикла, t -- длина цикла. Следующие две интуиции обосновываются ниже: 1. Новый if добавит нам примерно t_0 + t проверок. 2. Ситуация, когда заяц перепрыгнет черепаху лишь иногда уменьшит лишние t итераций и это не то чтобы частая ситуация. Док-во: Рассмотрим сперва ситуацию, когда черепаха только зашла на цикл спустя t_0 и заяц сделал два шага. Пусть расстояние заяца по циклу до нее -- m. При существующем алгоритме: 1. За каждую итерацию расстояние сокращается на 1 (= -2 + 1) и происходит проверка, что позиции совпали. 2. Таким образом m итераций. 3. Новый if тут ничего не изменит -- проверки и так есть на каждом уменьшении расстояния m на 1. Новый if только убыстрит в ситуации, если черепаха зашла на цикл, а заяц проскочил в этот момент черепаху. Т.е. когда m = 1 или 0 сразу после захода черепахи на цикл. 1. Без доп if мы имеем примерно лишние t итераций только для данной ситуации. 2. Но с новым if мы всегда имеем лишние t_0 + t проверок и иногда в ситуации выше меньше итераций на t. То есть даже когда эта ситуация прозошла все равно будет лишние t_0 проверок против t лишний итераций прежнего цикла. Цикл не выглядит очень сложным -- пара проверок, присваиваний. А в остальных случаях всегда будет t_0 + t лишних проверок. Оптимизация тут как-то сомнительна или требует доп мотивации со стороны уже скорости конкретных инструкций и только при странных распределениях t_0, t когда вероятность m = 1 и 0 в момент когда черепаха зашла на цикл -- весома.
Would you like a delicious big mooncake? #shorts#Mooncake #China #Chinesefood
00:30
ROCK PAPER SCISSOR! (55 MLN SUBS!) feat @PANDAGIRLOFFICIAL #shorts
00:31
Backstage 🤫 tutorial #elsarca #tiktok
00:13
Elsa Arca
Рет қаралды 43 МЛН
Processor Intel Core i5 and Its Features | Free Essay Example
8:58
IvyPanda Study Hub
Рет қаралды 1
Docker за 20 минут
21:42
suchkov tech
Рет қаралды 62 М.
Would you like a delicious big mooncake? #shorts#Mooncake #China #Chinesefood
00:30