Односвязный список
Односвязный список (связный список) — базовая структура, представляющая собой соединение узлов с однотипными данными.
Структура записи
listitem : item: type, //type - тип хранимых данных Plink : listitem; // указатель на следующий элемент списка
Структура для работы с односвязным списком
Структура списка
type singlelistilist: first:listitem, last: listitem, head: listitem, var list:singlelistite
Функция иницилизации
func singlelistitem->init list.first:= NULL; list.last:= NULL; list. head:= NULL; end;
Добавление элемента в конец списка
func singlelistlist->addItemBefore(item:type) i:listitem := new listitem; i->item := item; i->Plink := NULL; if first = NULL then first := i; last := i; end; else last.Plink := i; last := i; end;
Добавление элемента в начало списка
func singlelistlist->addItemAfter(item:type) i:listitem := new listitem; i->item := item; i->Plink := NULL; if first = NULL then first := i; last := i; end; else i->Plink := first; first := i; end;
Удаление элемента с начала списка
func singlelistlist->deleteItemAfter t:listItem; t:=first; if first <> nil then first:=t->PLink; first.PLink:=NULL; delete t; head:=first; end; else list.first:= NULL; list.last:= NULL; list. head:= NULL; end; end;
Удаление элемента с конца списка
func singlelistlist->deleteItemBefore l,d: listitem; l := first; while l.Plink <> NULL do d:=l; l:=l.Plink; end; d.Plink:=NULL; dispose(l); end;
Примеры реализации
Примеры реализации у меня в ребозитории на GitLab
- На C++ : Link;
- На Free Pascal Link