Программная инженерия Нижний Новгород 017 Лабораторный


pMem – указатель на память, выделенную для хранения стека,   MemSize


Download 1.23 Mb.
Pdf ko'rish
bet34/87
Sana08.06.2023
Hajmi1.23 Mb.
#1463900
TuriУчебно-методическое пособие
1   ...   30   31   32   33   34   35   36   37   ...   87
Bog'liq
Pract ADS

pMem – указатель на память, выделенную для хранения стека

MemSize – размер выделенной памяти, 

MaxMemSize – размер памяти, выделяемый по умолчанию, если при создании 
стека явно не указано требуемое количество элементов памяти,

DataCount – количество запомненных в стеке значений

Hi – индекс элемента массива, в котором хранится последнее добавленное значение 
стека. 
2.2. Алгоритмы 
2.2.1. Стек 
Для работы со стеком предлагается реализовать следующие операции: 

Метод Put – добавить элемент; 
При добавлении элемента в стек необходимо переместить указатель вершины стека, 
записать элемент в соответствующую позицию динамического массива и увеличить 
количество элементов. 

Метод Get – удалить элемент; 
При удалении элемента из стека необходимо возвратить значение из динамического 
массива по индексу вершины стека, переместить указатель вершины стека и уменьшить 
количество элементов. 

Метод IsEmpty – проверить стек на пустоту; 
Стек пуст, если в нем нет ни одного элемента, т.е. когда количество элементов равно нулю. 

Метод IsFull – проверить стек на полноту. 
Стек полон при исчерпании всей отведенной под хранение элементов памяти, т.е. когда 
значение DataCount совпадает со значением MemSize. 


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

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

Если очередной символ – открывающая скобка, то её порядковый номер 
помещается в стек. 

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

Если в этой ситуации стек оказывается пустым, то вместо номера открывающей 
скобки записывается 0, а счетчик ошибок увеличивается на единицу. 

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

Download 1.23 Mb.

Do'stlaringiz bilan baham:
1   ...   30   31   32   33   34   35   36   37   ...   87




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling