Составители:
Рубрика:
Implementation
Const NilLst = 0 ; {nil для списков, в том числе для списка свободной памяти }
type
ord {звено цепи ( списка ): }
Info : El; {- содержимое (элемент списка) }
Next : Link; { - ссылка на следующее звено }
end { Node } ;
MemoryForLists = array [ Index ] of Node;
{рабочий массив для размещения списков }
var Memory : MemoryForLists;
i : Index;
... { На месте ... размещаются блоки процедур и функций }
begin
{ инициализация списка свободной памяти в массиве Memory }
Memory [ MemMaxSize ] . Next := NilLst;
for i := 1 to MemMaxSize do
Memory [ i-1 ] . Next := i ;
end {L1ListV}.
Рис. 1.12. Макет секции Implementation модуля L1ListV
Unit Global;
{Здесь задаются тип элементов Л1–списка и максимальный размер "рабочей" памяти }
Interface
const
M
axSize = { максимальный размер }
0
0; {например } {"рабочей" памяти }
type El = Char; {например}
Implementation
end { Global }.
Рис. 1.13. Модуль Global
1.5. Линейный двунаправленный список
Как уже отмечено в 1.1, Л2–список представляет собой такой линейный
список, по которому можно перемещаться от текущего элемента как в направ-
лении конца списка, так и в направлении его начала. Функциональная специ-
фикация Л2–списка может быть получена расширением приведенной на
рис. 1.6 функциональной спецификации Л1–списка, например, путем задания
трех дополнительных базовых операций (рис. 1.14).
Семантику дополнительных базовых операций определим с помощью
троек Хоара аналогично тому, как это было сделано в 1.2 для Л1–списка.
Пусть по-прежнему w = [ x
1
, x
2
, ..., x
n-1
, x
n
] – непустая последовательность эле
14
Implementation Const NilLst = 0 ; {nil для списков, в том числе для списка свободной памяти } type ord {звено цепи ( списка ): } Info : El; {- содержимое (элемент списка) } Next : Link; { - ссылка на следующее звено } end { Node } ; MemoryForLists = array [ Index ] of Node; {рабочий массив для размещения списков } var Memory : MemoryForLists; i : Index; ... { На месте ... размещаются блоки процедур и функций } begin { инициализация списка свободной памяти в массиве Memory } Memory [ MemMaxSize ] . Next := NilLst; for i := 1 to MemMaxSize do Memory [ i-1 ] . Next := i ; end {L1ListV}. Рис. 1.12. Макет секции Implementation модуля L1ListV Unit Global; {Здесь задаются тип элементов Л1–списка и максимальный размер "рабочей" памяти } Interface const MaxSize = { максимальный размер } 00; {например } {"рабочей" памяти } type El = Char; {например} Implementation end { Global }. Рис. 1.13. Модуль Global 1.5. Линейный двунаправленный список Как уже отмечено в 1.1, Л2–список представляет собой такой линейный список, по которому можно перемещаться от текущего элемента как в направ- лении конца списка, так и в направлении его начала. Функциональная специ- фикация Л2–списка может быть получена расширением приведенной на рис. 1.6 функциональной спецификации Л1–списка, например, путем задания трех дополнительных базовых операций (рис. 1.14). Семантику дополнительных базовых операций определим с помощью троек Хоара аналогично тому, как это было сделано в 1.2 для Л1–списка. Пусть по-прежнему w = [ x1, x2, ..., xn-1, xn ] – непустая последовательность эле 14
Страницы
- « первая
- ‹ предыдущая
- …
- 12
- 13
- 14
- 15
- 16
- …
- следующая ›
- последняя »