Презентация, доклад по программированию на стему Стек, раздел Динамическое прогаммрование (11 класс)

Содержание

ИсторияВ 1946 Алан Тьюринг Алан Тьюринг ввёл понятие стека [1]. В 1957 году немцы Клаус Самельсон и Фридрих Л. Бауэр запатентовали идею [2].

Слайд 1Стек

Стек

Слайд 2История
В 1946 Алан Тьюринг Алан Тьюринг ввёл понятие стека [1].
В

1957 году немцы Клаус Самельсон и Фридрих Л. Бауэр запатентовали идею [2].
ИсторияВ 1946 Алан Тьюринг Алан Тьюринг ввёл понятие стека [1]. В 1957 году немцы Клаус Самельсон и

Слайд 3Определение
Стек - это данные динамической структуры, которые представляют собой совокупность линейно-связанных

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

Слайд 4LIFO
Стек функционирует по принципу LIFO (Last-In-First-Out) - "последним пришел - первым

исключается".
При записи и выборке изменяется только адрес вершины стека. Поэтому каждый стек имеет базовый адрес, от которого производятся все операции со стеком. В случае, когда стек пуст, адреса вершины и основания стека совпадают.
LIFOСтек функционирует по принципу LIFO  (Last-In-First-Out) -

Слайд 5Использование
При работе со стеком нет необходимости прямо использовать адресацию памяти.


Самым важным применением стека в программах является:
использование стека для хранения адресов возврата в программу из подпрограмм;
из процедур обработки прерываний;
передача через стек параметров в подпрограммы;
размещение в стеке локальных параметров процедур.

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

Слайд 6Реализация
Так как язык Pascal не имеет непосредственно типа данных стек, то

для его моделирования наиболее подходящими структурами являются
массивы (статический стек для моделирования структур заданного размера ) и
динамический стек, при этом структура будет помещаться в динамической памяти, и её размер будет ограничен только размером кучи.
РеализацияТак как язык Pascal не имеет непосредственно типа данных стек, то для его моделирования наиболее подходящими структурами

Слайд 7Описание стека

Type Tptr=^TElem; {Тип указателя на элемент стека}

TElem = record {Тип элемента стека }
inf : integer; {информационная часть} link : Tptr; {соединительная часть}
end;

Описание стекаType Tptr=^TElem; {Тип указателя на элемент стека}        TElem =

Слайд 8Исходное состояние
Для работы со стеком необходимо иметь
один основной указатель на

вершину стека (возьмём идентификатор Top) и
один дополнительный временный указатель (возьмём идентификатор P), который используется для выделения и освобождения из памяти элементов стека.

Top

P

nil

?

Top:=nil;

Исходное состояниеДля работы со стеком необходимо иметь один основной указатель на вершину стека (возьмём идентификатор Top) и

Слайд 9Выделение памяти под первый элемент стека и занесение в него информации:


Top

nil

P

Inf: 5

Link

nil

New(P);
P^.Inf:=5;
P^.Link:=nil;

Выделение памяти под первый элемент стека и занесение в него информации: TopnilPInf: 5LinknilNew(P);P^.Inf:=5;P^.Link:=nil;

Слайд 10Установка вершины стека Top на созданный элемент:
Link
nil
Inf: 5
Top
P
Top:=P;

Установка вершины стека Top на созданный элемент: LinknilInf: 5TopPTop:=P;

Слайд 11Добавление элемента стека
Исходное состояние:

P
?
Top
Link
Inf: 5
Link
Inf: 1
Link
Inf: 3
nil

Добавление элемента стека Исходное состояние: P?TopLinkInf: 5LinkInf: 1LinkInf: 3nil

Слайд 12Добавление элемента стека
Выделение памяти под новый элемент стека. Внесение значения

в информационное поле нового элемента и установка связи между ним и "старой" вершиной стека Top:

Top

Link

Inf: 5

Link

Inf: 1

Link

Inf: 3

nil

P

Inf: 10

Link

New(P);
P^.Inf:=10;
P^.Link:=Top;

Добавление элемента стека Выделение памяти под новый элемент стека. Внесение значения в информационное поле нового элемента и

Слайд 13Добавление элемента стека
Перемещение вершины стека Top на новый элемент:
Top
Link
Inf:

5

Link

Inf: 1

Link

Inf: 3

P

Inf: 10

Link

nil

Top:=P;

Добавление элемента стека Перемещение вершины стека Top на новый элемент: TopLinkInf: 5LinkInf: 1LinkInf: 3PInf: 10LinknilTop:=P;

Слайд 14Удаление элемента стека
Исходное состояние
Top
Link
Inf: 5
Link
Inf: 1
Link
Inf: 3
P
Inf: 10
Link
Val:?
?

Удаление элемента стека Исходное состояние TopLinkInf: 5LinkInf: 1LinkInf: 3PInf: 10LinkVal:??

Слайд 15Удаление элемента стека
Извлечение информации из информационного поля вершины стека Top в

переменную Val и установка на вершину стека вспомогательного указателя P:

Top

Link

Inf: 5

Link

Inf: 1

Link

Inf: 3

P

Inf: 10

Link

Val:10

Val:=Top^.Inf;
P:=Top;

Удаление элемента стекаИзвлечение информации из информационного поля вершины стека Top в переменную Val и установка на вершину

Слайд 16Удаление элемента стека
Перемещение указателя вершины стека Top на следующий элемент и

освобождение памяти, занимаемой "старой" вершиной стека:

Top

Link

Inf: 5

Link

Inf: 1

Link

Inf: 3

P

Inf: 10

Link

Val:10

Top:=P^.Link;
Dispose(P);

Удаление элемента стекаПеремещение указателя вершины стека Top на следующий элемент и освобождение памяти, занимаемой

Слайд 17Задание
Исследовать и доработать программу стек_на основе_списка.pas.
Разместить в стеке 10 символов и

распечатать их в обратном порядке.
Проверить в выражении баланс открывающихся "(" и закрывающихся ")" скобок.
Идея алгоритма заключается в следующем. Если встречается открывающаяся скобка, то в стек помещают какой-либо символ. Если встречается закрывающаяся скобка, то проверяют состояние стека. При этом возможны следующие ситуации:
стек непуст: из стека извлекают один элемент;
стек пуст, это свидетельствует о том, что закрывающихся скобок больше чем открывающихся.
После того, как просмотрена вся строка символов, необходимо проверить состояние стека. Если он пуст, то баланс скобок не нарушен. В противном случае - баланса нет.

ЗаданиеИсследовать и доработать программу стек_на основе_списка.pas.Разместить в стеке 10 символов и распечатать их в обратном порядке. Проверить

Что такое shareslide.ru?

Это сайт презентаций, где можно хранить и обмениваться своими презентациями, докладами, проектами, шаблонами в формате PowerPoint с другими пользователями. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами.


Для правообладателей

Яндекс.Метрика

Обратная связь

Email: Нажмите что бы посмотреть