Скачиваний:
60
Добавлен:
02.05.2014
Размер:
152.06 Кб
Скачать

II. Метод решения

1. Если список пуст, то выполнить операцию исключения невозможно и функция завершается

2. Определение указателя на исключаемый элемент: если исключение из головы, то значение указателя определяется значением головы; если исключение из хвоста, то значение указателя определяется ссылкой первого элемента списка на предыдущий элемент, так как список циклический

3. Формирование выходного параметра – информации, которая хранится в исключаемом элементе

;

4. Определение новых связей в списке: если список содержит только один элемент, то фиксируется, что после исключения список пуст (head:=nil); если список содержит более одного элемента, то формируются новые значения указателей в последующем и предыдущем элементах относительно исключаемого, и, если исключение производится из головы, то формируется новое значение головы.

5. Освобождается динамическая память, занятая исключаемым элементом

dispose(tek)

tek:=nil

6. Формируется признак успешного выполнения операции исключения

iskldek:=true

III. Информационная модель

Назначение

Имя

Тип

Указатель на исключаемый элемент

tek

tpel

V. Программная модель

function iskldek(var head:tpel;var inf:tinf;mesto:boolean):boolean;

var tek:tpel;

begin

if head=nil then

begin

iskldek:=false;

exit

end;

if mesto then

tek:=head

else

tek:=head^.ppred;

inf:=tek^.inf;

if head^.psled=head then

head:=nil

else

begin

tek^.ppred^.psled:=tek^.psled;

tek^.psled^.ppred:=tek^.ppred;

if mesto then head:=head^.psled

end;

dispose(tek);

tek:=nil

iskldek:=true;

end;

Разработка подпрограммы просмотра дека

I. Спецификация

  1. Назначение: вывод на экран элементов двунаправленного циклического списка в прямом или обратном порядке

  2. Имя: printdek

  3. Вид: процедура

  4. Перечень параметров

Статус

Назначение

Имя

Тип

Вид

Вход

голова списка

head

tpel

параметр-значение

Вход

порядок просмотра элементов (true – от головы списка; false – от хвоста списка)

mesto

boolean

параметр-значение

где type tinf=integer;

tpel=^tel;

tel=record

inf:tinf;

psled,ppred:tpel

end;

  1. Заголовок подпрограммы:

procedure printdek(head:tpel;mesto:boolean);

II. Метод решения

1. Если список пуст, то сообщение об этом и завершение подпрограммы

2. Определение указателя на первый выводимый элемент: если вывод из головы, то указателю присваивается значение головы; если вывод из хвоста, то указателю присваивается адрес последнего элемента

3. Установка счетчика элементов в 1

i:=1

4. Повторять

а) вывод информационной части очередного элемента

вывод(i, "элемент", tek.inf)

б) увеличение счетчика элементов на 1

i:=i+1

в) определение указателя на следующий выводимый элемент: если вывод от головы, то указателю присваивается значение указателя на следующий элемент; если вывод от хвоста, то – значение указателя на предыдущий элемент

г) определение условия окончания просмотра: если вывод от головы, то указатель на очередной элемент совпадает со значением головы; если вывод от хвоста, то указатель на очередной элемент совпадает с указателем на последний элемент списка

до выполнения условия определенного в пункте г)

Соседние файлы в папке Лекции по Паскалю