Функция добавляет новый элемент в начало односвязного списка и, соответственно, обновляет указатель на начало списка. Именно обновление указателя на начало списка и делается через присваивание *s = el
.
Это функция также может быть использована для вставки элемента в середину списка, если в качестве параметра s
будет передаваться указатель на поле next
предыдущего элемента. (Другими словами, вставка элемента в середину списка - это ни что иное, что вставка элемента в начало правого подсписка, начинающегося в точке вставки.)
P.S. Функция написана стилистически кривовато: делает ненужное приведение типа на результате malloc
и не пользуется очевидной возможностью выполнить инициализацию переменной el
(вместо присваивания).