Который предвартельно установлен указатель. Включение нового узла в список за тем узлом, на

Включение нового узла в список за тем узлом, на

Поиск в списке узла по заданному условию

Рис. 25. Перестановка указателя

...  
if first<> nil then begin { список не пуст? }
p:=first; { установка вспомогательного указателя на первый узел списка }
p:=p^.link; { перестановка вспомогательного указателя на второй узел списка }
writeln(p^.info); { обработка информационного поля второго узла списка }
end;  
...  
       

Условием поиска элемента в списке может быть:

¨ значение информационного поля элемента,

¨ порядковый номер элемента в списке, начиная от первого узла,

¨ адрес элемента списка, который хранится в некотором указателе.

Поиск элемента в списке по заданному условию обычно организуется в цикле, включающем операции проверки выполнения условия для текущего элемента, на который ссылается указатель, и перестановки указателя на соседний элемент списка (т.е. поиск осуществляется в процессе прохода по списку). Проверка условия связана с вычислением булевских выражений в условных операторах или операторах цикла, использующих доступ к атрибутам объектов через указатели (см. 2.2.3). Например,

if (p<> nil) and (p^.info = значение) then < тело условного оператора >

или

while (p<> nil) and (p^.info<> значение) do < тело цикла >.

Поиск заканчивается либо при обнаружении элемента списка, соответствующего заданному условию (результатом поиска в этом случае является значение указателя, установленного на искомый узел), либо при достижении конца списка, если элемент, соответствующий условию поиска, не обнаружен (результатом поиска в этом случае является NIL).

Для того чтобы включить в список новый элемент за тем элементом, на который предварительно установлен указатель, необходимо разместить элемент хранения в области динамической памяти и выполнить последовательность операций, которая иллюстрируется рис. 26. После выполнения операции вставки значение указателя на первый элемент списка не изменяется. Значение указателя на тот элемент, за которым выполнена вставка, также не изменяется.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: