в двонаправлений список, написать програму которая
добовляет в начало списка новий даный елемент
Что именно тебе здесь непонятно?
1. выделяешь память под новый элемент (new_p)
2. new_p^.prev присвоить nil, потому что перед начальным элементом ничего не должно быть
3. new_p^.next присвоить началу списка, потому что ссылаться первый элемент должен на остальные, те, что были в списке перед его добавлением
4. head^.prev - заносишь само значение new_p, потому что перед списком добавился новый элемент, и на него нужна ссылка.
5. Ну, и наконец, само значение head тоже присваиваешь new_p, тогда вся работа со списком будет начинаться с первого элемента.
(это все при условии, что список НЕ пустой, если он пуст, то надо будет обрабатывать еще и tail, "хвост списка").
Попробуй реализовать кодом то, что тут написано словами...