> -- Евгений Семашко писал(а):
> Хорошо, что здесь только две операции. А если  бы их было 50, 10? Как бы мой код увеличился...

Ой, да ладно...

---

Я односвязными списками обычно так пользуюсь:
## Код:
```
TYPE
  List = POINTER TO RECORD
    head: Head;
    tail: List
  END;

  PROCEDURE NewList (head: Head; tail: List): List;
    VAR list: List;
  BEGIN NEW(list); list.head := head; list.tail := tail;
    RETURN list
  END NewList;

  ...
  list := NewList(head, list); (* добавить элемент в начало списка *)
  ...
```

где тип Head - для каждого типа списка свой.