на стр 6, лекции 3, Очевидно "Ck <= модуль(Gk(е))*b(k+1)" (1) - , подскажите что значит "модуль" и почему это очевидно... |
Списки
Рассмотрим основные отображения и операции на примере двустороннего
списка, сформированного из узлов вида :
.
Будем считать, что дескриптор списка имеет вид:
. Ниже
условимся считать, что признак конца —
,
а признак начала —
.
Основные отображения определяются следующим образом:
,
,
,
Создать пустой список

Удалить из списка элемент, находящийся в позиции
pos памяти

Замечание
В теле процедуры отсутствует параметр
.
При ее использовании могут возникнуть проблемы, связанные с некорректным
обращением, так как в процедуре не производится проверка, является ли
позиция pos позицией какого-либо элемента списка
.
Ответственность за
некорректное обращение несет вызывающая программа. Проверка этого условия
с помощью сканирования списка могла бы оказаться слишком дорогой и свела
бы на нет преимущества использования связных списков. Еще одна проблема,
связанная с выполнением этой операции, заключается в том, что узел
может оказаться недоступным при потере значения переменной pos, но память
будет оставаться занятой. Если это нежелательно, следует, воспользовавшись
системными средствами, освободить занимаемую узлом память. Замечания по
поводу некорректного обращения будут справедливы и для некоторых следующих
процедур, однако мы не будем каждый раз напоминать об этом.
Вставить в список элемент
после элемента,
находящегося в позиции
![\formula{
\t{procedure InsertAfter(S,
pos, e)};\\
\t{begin}\\
\mbox{}\q {\rm create}(\t{t}: [\t{e},\ \t{pos}\t{\^{}}.{\rm next}, \t{pos}]);\
\t{pos}\t{\^{}}.{\rm next}\t{\^{}}.{\rm preced} := \t{t};\
\t{pos}\t{\^{}}.{\rm next} := \t{t}\\
\t{end};
}](/sites/default/files/tex_cache/033906d3e4fe8e9ba25c64fe8d1b01a5.png)
Следующие две операции рассмотрим на примере одностороннего циклического списка (см. рис. 2.4).
Добавить элемент к концу списка
Добавить элемент к началу списка
![\formula{
\t{procedure AddToBegin (e,
S)};\\
\t{begin}\\
\mbox{}\q {\rm create}(\t{t}:\,[\t{e},\,\t{S}\t{\^{}}.{\rm
last}\t{\^{}}.{\rm next}]);\ \t{S}.{\rm last}\t{\^{}}.{\rm next} :=
\t{t}\\
\t end;
}](/sites/default/files/tex_cache/b76f1abd3dcd1255e2eaec5027b40963.png)
Следующие три процедуры рассмотрим на примере двустороннего циклического списка (см. рис. 2.6).
Удалить последний элемент списка

Удалить первый элемент списка

Удалить из списка элемент, находящийся
в позиции
