Читайте также:
|
|
Представление списков с помощью массивов позволяет вставлять и удалять элементы в любую позицию. Выполнение этих операций не представляет особого труда, однако при этом требуется перемещение элементов, чтобы освободить место под новый элемент или закрыть освободившуюся ячейку соответственно.
Пусть last -длина списка, а maxlength - максимальный размер массива, причем он выбирается достаточно большим (maxlength >= last), чтобы хранить списки любой длины, которые могут встречаться в данной программе. Разместим список в начале массива, так что индексы элементов списка 1<= i <=last и массива совпадают.
Определим тип данных List как запись с двумя полями:
const maxlength =100;
type elementtype = integer;
list = record
elements: array[1..maxlength] of elementtype;
last: integer
end;
position = integer;
Приведем перечень процедур и функций, которые выполняют наиболее общие операции над списками L:
Процедура вставки Insert элемента x в позицию p может выглядеть следующим образом:
function EndL(L:list):possition;
begin
EndL:=L.last+1
end;
procedure Insert(x: elementtype; p: position; var L:list);
var q:position;
begin
with L do
if last >= maxlength then
begin writeln(‘ Список полон’); Exit end
else if (p>End(L)) or (p<1 then)
begin writeln(‘Такой позиции нет’); Exit end
else begin
for q:=last downto p do elements[q+1]:=elements[q];
last:=last+1; elements[p]:=x
end
end;
Дата добавления: 2015-07-19; просмотров: 59 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Организация очереди | | | Введение |