Цитата
без головного элемента
что-то новое...
список он на то и список, чтобы начинаться и заканчиваться...
Ладно, попробую описать работу со списком.
ООП, я так понял тебе не знакомо, придётся извращаться...
Код
Type
{Структура описывает элемент списка}
PListRec=^TListRec;
TListRec=Record
Key:Integer; {Ключ}
Item:String; {для удобства возбмём элементы спсиска - строки}
Next:PListRec {Следующий элемент}
End;
{Бредовая функция, но преподы её любят. Создаёт пустой список.
Мы будем обозначать список Nil'ом}
Function List_Create:PListRec;
Begin
CreateList:=Nil
End;
{Добавляет элемент Item с ключом Key в список List}
Procedure List_Add(Var List:PListRec;Key:Integer;Item:String);
Var
p:PListRec;
Beign
New(p);
p^.Key:=Key;
p^.Item:=Item;
p^.Next:=List;
List:=p
End;
{Очищает список освобождая всю память}
Procedure List_Clear(Var List:PListRec);
Var
p:PListRec
Begin
While List<>Nil Do
Begin
p:=List^.Next;
Dispose(List);
List:=p
End
End;
{Проверяет, есть ли элемент с ключом Key в списке. Если есть, то возвращает указатель на элемент списка с этим ключом, иначе - Nil}
Function List_Contains(Key:Integer;List:PListRec):PListRec;
Var
p:PListRec;
Begin
p:=List;
While p<>Nil Do
If p^.Key=Key Then
Begin
Contains:=p;
Exit
End
Else
p:=p^.Next;
Contains:=Nil
End;
{Доработанная функция List_Add, которая проверяет, есть ли элемент с таким ключом в списке. Если есть, то изменяет его значение, иначе добавляет его.}
Procedure List_Set(Var List:PListRec;Key:Integer;Item:String);
Var
p:PListRec;
Begin
p:=Contains(Key);
If p=Nil Then
Add(List,Key,Item)
Else
p^.Item:=Item
End;
Думаю, что это всё, что может понадобиться для работы со списком в данном контексте...
Могут быть описки, т. к. пишу без компилятора...
Остальное чуть позже... Надо же мне хотя бы вид делать, что работаю