Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Відповіді до іспиту по СОД.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
191.49 Кб
Скачать
  1. Включення/забирання елемента до/з стеку. Приклад програмного коду.

Занесение элемента в стек

Занесение элемента в стек производится аналогично вставке нового элемента в начало списка. Процедура занесения элемента в стек должна содержать два параметра: первый задает вершину стека, в который нужно занести элемент, второй – заносимое значение элемента стека.

Процедура формирования стека будет иметь следующий вид:

Procedure add(Pn:Tperson;var First:Tperson);

Begin if First <>nill then

Begin

Pn^.Next = First; First :=Pn; end

Else begin Pn^.Next=nil; First:=Pn;end

End;

Извлечение элемента из стека

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

Procedure Extract(First:Tperson;var Pold:Tperson);

Begin

if First <>nill then

Begin Pold:=First; First:=Pold.Next; end

Else begin Pold:=nil;end;

End;

Недостатком описанной процедуры является предположение о том, что стек не пуст. Для его исправления следует разработать логическую функцию, определяющую, пуст ли обрабатываемый стек.

  1. Включення/забирання елемента до/з черги. Приклад програмного коду.

Черга – структура яка э звичайною чергою.

Занесение элемента в очередь

Занесение элемента в очередь реализуется как добавлению элемента в конец списка. Рассмотрите процедуру, описанную ниже.

Procedure Add(Last:Tperson; var Pnew:Tperson);

Begin if Last <>nil then

Begin Pnew^.Next: = Last;Last:=Pnew; end

Else begin Pnew^.Next = nil;Last:=Pnew;end

End;

Извлечение элемента из очереди

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

Procedure Extract(Last:Tperson; var Pold:Tperson);

Var P:TPerson;

Begin if Last <> nil then

Begin P:=Last;

While P^.Next^.Next<>nil do P:=P^.Next;Pold:= P^.Next;P^.Next:=nil;

end;

Else Pold:= nil;

End;

  1. Черга: призначення, приклади застосування. Організація черги за допомогою лінійного динамічного списку. Приклад програмного коду.

Другой специальный тип списка - очередь, где элементы вставляются с одного конца, а выборка - из другого конца. В программировании очереди применяются очень широко, например, при моделировании, буферизированном вводе-выводе или диспетчеризации задач в операционных системах.

Основные операции над очередью - те же, что и над стеком - включение, исключение, определение размера, очистка, неразрушающее чтение.

Черга в програмуванні — динамічна структура даних, що працює за принципом "перший прийшов - перший пішов" Елемент, що додається до черги, опиняється в її хвості. Елемент, що видаляється з черги, знаходиться в її голові.

Для работы с очередью используются указатели на ее начало и конец, а также вспомогательный указатель. По отношению к очередям может использоваться специальная терминология, например, начало (front) и конец (rear) очереди. Объекты вставляются в конце очереди и проталкиваются по ней до тех пор, пока не достигнут начала очереди.

Для работы с очередями используются следующие действия:

  • Очистка очереди;

  • Считывание первого элемента очереди;

  • Вставка элемента в конец очереди;

  • Удаление первого элемента очереди;

  • Проверка, является ли очередь пустой.

Деки

Дек является более общим вариантом стека или очереди. При работе с деками используются понятия левый (left) и правый (right) концы. Кроме того иногда различают деки с ограниченным вводом и с ограниченным выводом.

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