![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Простейшие операции, производимые над односвязными списками
1) Вставка в начало односвязного списка. Надо вставить в начало односвязного списка элемент с информационным полем D. Для этого необходимо сгенерировать пустой элемент (P=GetNode). Информационному полю этого элемента присвоить значение D (INFO(P)=D), значению указателя на этот элемент присвоить значение указателя на начало списка (Ptr(P) = Lst), значению указателя начата списка присвоить значение указателя Р (Lst = Р).
Вставка в начало списка
P=GetNode
Info(P)=x
Ptr(P) = Lst
Lst = P
return
2) Удаление элемента из начала односвязного списка. Надо удалить первый элемент списка, но запомнить информацию, содержащуюся в поле Info этого элемента. Для этого введем указатель Р, который будет указывать на удаляемый элемент (Р = Lst). В переменную X занесем значение информационного поля Info удаляемого элемента (X=Info(P)). Значению указателя на начало списка присвоим значение указателя следующего за удаляемым элемента (Lst = Ptr(P)). Удалим элемент (FreeNode(P)).
Удаление из начала списка
P = Lst
x=Info(P)
Lst = Ptr(P)
FreeNode(P)
return
Двусвязный список
Использование однонаправленных списков при решении ряда задач может вызвать определенные трудности. Дело в том, что по однонаправленному списку можно двигаться, только в одном направлении, от заглавного звена к последнему звену списка. Между тем нередко возникает необходимость произвести какую-либо обработку элементов, предшествующих элементу с заданным свойством. Однако после нахождения элемента с этим свойством в односвязном списке у нас нет возможности получить достаточно удобный и быстрый доступ к предыдущим элементам - для достижения этой цели придется усложнить алгоритм, что неудобно и нерационально.
Для устранения этого неудобства добавим в каждое звено списка еще одно поле, значением которого будет ссылка на предыдущее звено списка. Динамическая структура, состоящая из элементов такого типа, называется двунаправленным или двусвязным списком.
Двусвязный список характеризуется тем, что у любого элемента есть два указателя. Один указывает на предыдущий элемент (обратный), другой указывает на следующий элемент (прямой) (рис. 3.4).
Фактически двусвязный список это два односвязных списка с одинаковыми элементами, записанных в противоположной последовательности.
Дата публикования: 2015-02-03; Прочитано: 179 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!