

11. Линейный двусвязный список. Реализация на массиве
Линейный двусвязный список-возможность продвижения в любом направлении по цепочке элементов: как к концу списка, так и к его началу.
Каждый элемент такого списка содержит два указателя:
1)прямой – на следующий элемент списка;
2)обратный – на предыдущий элемент списка.
Кроме указателя на начало списка в структуру двусвязного списка должен быть включен указатель на конец списка (т.е. на последний элемент). Начало и конец двусвязного списка логически эквивалентны, т.к. доступ к элементу списка может быть осуществлен с любого конца списка. В конце каждого пути должен стоять нулевой указатель (пустой).
Алгоритм вставки после К элемента InsertAfter (i, c):
1.j <- Free//индекс свободного элемента
2.Free <- List [j].next
3.List[j].info <- C//заносим информацию
4.K <- List[i].next//индекс нового свободного элемента
5.List[i].next <-j//индекс следующего элемента
6.List[j].next <-K//смена указателя предыдущего элемента
7.List[j]Pred <-i//занесение информации
8.List[K].Pred <- j//указатель на следующий элемент