Что-то давненько не приходилось работать со списком, когда добавлять надо в конец.
Разбаловался системщиной, где один указатель - и добавление в голову)

Так вот, кажется громоздким IF, проверяющий при добавлении список на непустоту.

Разумно принять, что первый элемент списка - фиктивный, пустой.

Например:

## Код:
```
TYPE
      Word = POINTER TO RECORD
         next: Word;
         ...
      END;

      WordList = RECORD
         dummy, last: Word
      END;
```


Тогда при создании списка:
NEW(list.dummy); list.last := list.dummy;
а при добавлении очередного элемента:
list.last.next := new; list.last := new;

Ну а голова списка - list.dummy.next.
Проверка на пустоту: list.last = list.dummy.