Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы аисд.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.94 Mб
Скачать

6.Понятие списковой структуры. Стек как полустатическая структура. Операция над стеками

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

Списки

Списки - это набор связанных элементов данных, которые в общем случае могут быть разного типа.

Пример списка:

E1, E2, ........, En,...   n > 1 и не зафиксировано.

Количество элементов списка может меняться в процессе выполнения программы. Различают 2 вида списков:

1) Несвязные

2) Связные

В несвязных списках связь между элементами данных выражена неявно. В связных списках в элемент данных заносится указатель связи с последующим или предыдущим элементом списка.

Стеки, деки и очереди - это несвязные списки. Кроме того они относятся к последовательным спискам, в которых неявная связь отображается их последовательностью. 

Стеки

Очередь вида LIFO (Last In First Out - Последним пришел, первым ушел ), при которой на обслуживание первым выбирается тот элемент очереди, который поступил в нее последним, называется стеком. Это одна из наиболее употребляемых структур данных, которая оказывается весьма удобной при решении различных задач.

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

Графически стек можно представить следующим образом:

                          

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

Операции, производимые над стеками: 

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

Push(S,I), где S - идентификатор стека, I - заносимый элемент.

2. Выборка элемента из стека.

Pop(S)

3. Определение пустоты стека.

Empty(S)

4. Прочтение элемента без его выборки из стека.

StackTop(S)

5. Определение переполнения стека (для полустатических структур)

  Full(S)

Алгоритмы основных операций со стеком

Обозначим i - указатель вершины

 

Push(S,x)

i = i+1

S(i) = x

return

 

Pop(S)

x = S(i)

i = i -1

return

 

Empty(S)

if i = 0

  then “пусто”

  Stop

  return

endif

 

Full(S)

if i = maxS

  then “переполнение”

  Stop

  return

endif

StackTop(S)

x = S(i)

return

Заметим, что при выборки элемента из стека для обеспечения корректности выполняемой операции необходимо проверять стек на пустоту, поэтому абсолютно правильный алгоритм для функции  Pop(S)  будет следующим 

Pop(S)

if i = 0 then “пусто”

      Stop

      return

endif

x = S(i)

i = i -1

return

Алгоритм проверки стека на пустоту можно записать несколько по другому, если использовать логический тип данных

Empty(S)

if  i = 0   then empty = true

  else empty = false

endif

return

Затем можно изменить алгоритм функции Pop(S)

Pop(S)

Empty(S)

if empty = true

  then “пусто”

        Stop

        return

endif

x = S(i)

i = i -1

return

Наконец, полностью корректный алгоритм занесения нового элемента в реализованный на массиве полустатический стек обязательно должен предусматривать проверку на переполнение, соответственно приведем правильный алгоритм операции Push(S,i)  

Push(S,i)

 

if i = maxS

  then “переполнение”

  Stop

  return

endif

i = i+1

S(i) = x

return 

 Понятно, что maxS здесь максимальное число элементов массива.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]