
9. Односвязный список. Основные операции. Реализация с помощью массива
Связный список – структура, элементами которой служат записи с одним и тем же форматом, связанные друг с другом логически с помощью указателей, хранящихся в самих элементах.
В односвязном списке каждый элемент состоит из двух полей: содержательного и поля указателя. Содержательное поле хранит данные (в общем случае это запись). Поле указателя хранит адрес следующего элемента списка. По указателю получаем доступ к следующему элементу, от него к очередному и т.д. Поле указателя последнего элемента должно содержать специальный признак нулевого или пустого указателя, свидетельствующего о конце списка. Должен быть указатель начала списка. Он является частью его логической структуры. В данном случае указатель будет иметь значение индекса следующего элемента в массиве записей.
Основные операции:
1)включение элемента в список
2)удаление элемента из списка
3)нахождение элемента в списке
4)определить. является ли списо пуствм
Определение структуры: const MaxList=100;
array List[1..Maxlist] of (info, next) int info, next,c;
int BeginL; j:=list[i].next
c:= List[i].info; {обработа с } i:=List [i]. link
end;
Просмотр списка с начала:
1.i:=BeginL;
2.while i<>0 do begin
3.c:= List[i].info; {обработа с }
4.i:=List [i].next
5.end;
Включение элемента j в список после элемента IncertAfter(i,c)
1.List[j]. info=c;
2.List[j].next=List[i].next;
3.List[i].next:=j ;
Удаление элемента из списка стоящего после i Remove(i,c)
1.j:=List[i].next;
2.List[i].next:=List[j].next;
3.c:=List[j].info;
Добавление в список после i-го элемента:
1.j:=Free;//индекс свободного элемента
2.Free:=List[j].next;//индекс нового свободного элемента
3.List[j].info:=c;//занести информацию
4.List[j].next=List[i].link;//занести указатель
5.List[i].next=j;//сменить указатель предпоследнего элемента
Удаление из списка после i-го элемента:
1.j:=List[i].next;//индекс удаляемого элемента
2.c:=List[j].info;// переписали информацию
3.List[i].next:=List[j].next;//перенесли указатель
4.List[j].next:=Free;//занесли в указатель индекс свободного элемента
5.Free:=j;// сменили номер свободного элемента