Задача:
Использовать (линейные) однонаправленные списки без заглавочной ступени (рис. а) или с заглавочной ступенью (рис. б) при следующем их описании:

Параметр L обозначает список, а параметры E, E1 — данные типа TE, к которым можно применять операции присваивания и проверки на равенство. {TE = double}.
Определить рекурсивные функции, которые:
а) удаляет из списка L все вхождения элемента E;
б) строит L1 — копию списка L;
в) удваивает каждое вхождение элемента E в список L;
г) оставляет в списке L только первые вхождения одинаковых элементов.
Я так понял, что нужно создать вот такуй список:
Код: Выделить всё
struct L {
double E, E1;
L *next;
};Только не понимаю, что значит удалить из списка все вхождения E (пункт а). Это что, просто в каждом элементе списка параметру E присвоить 0?
И вот еще в задание пунка г не въехал. Там нужно удалить элементы, в которых E и E1 равны между собой, так?