Однонаправленный список реализуется примерно таким образом:
Код:
TLinkedListItem = record
Data : String; // Твои данные
Next : PLinkedListItem;
end;
PLinkedListItem = ^TLinkedListItem;
Т.е. в каждом элементе есть указатель на следующий.
в программе тебе так же потребуется завсести указатель на голову списка:
Код:
var
Head : PLinkedListItem;
Тогда добавление элемента будет проход до конца списка и добвление в конце нового элемента. Вывод в ListView будет либо с помощью специальной обертки (что бы список представить массивом), либо с помощью CallBack. Поиск - проход по списку рекурсивно (по заданию, на самом деле можно и без рекурсии обойтись).
ЗЫ. За рублей 200 на ЯндексДеньги готов написать весь код.