profile
Размещено 4 года назад по предмету Информатика от olka46

 Один из часто встречающихся видов списка стек — список, в котором все операции включения и извлечения, сопровождающегося удалением из списка, элементов выполняются только с одного края. Механизм функционирования стека отражён в его названии «LIFO» (Last In First Out — последним вошёл, первым вышел, подобно патронам в обойме). Следовательно, любой элемент не может быть извлечён и удалён из стека раньше, чем будут извлечены все элементы, помещённые в стек позднее него. Составить программу, реализующую функционирование стека. Стек оформить как массив.

  1. Ответ на вопрос
    Ответ на вопрос дан Аккаунт удален
    Option Explicit

    Const n = 50 'Максимальная емкость стека
    Dim LIFO(1 To n) As Variant
    Dim ptr As Integer  'указатель на вершину стека, моделируемого LIFO
    Dim Overflow As Boolean
    Dim EmptyLIFO As Boolean

    Sub Push(Elem As Variant)
        'добавляет элемент на вершину стека
        If ptr < n Then
            ptr = ptr + 1
            LIFO(ptr) = Elem
            Overflow = False
            EmptyLIFO = False
        Else
            Overflow = True
        End If
    End Sub

    Sub Pop(Elem As Variant)
        'Возвращает элемент с вершины стека и удаляет его из стека
        If ptr > 0 Then
            Elem = LIFO(ptr)
            ptr = ptr - 1
        End If
        EmptyLIFO = (ptr = 0)
    End Sub

    Sub main()
        ' Пример работы со стеком - перестановка букв в словах строки.
        ' Не меняя порядка слов в строке, переставить в каждом слове буквы в обратном порядке.
        ' Слова разделяются ровно одним пробелом.
        Dim s As String, s1 As String, i As Integer, e As String
        s = Sheets("Лист1").Cells(1, 1).Value
        If Len(s) = 0 Then
            MsgBox "Нет входной строки"
            Exit Sub
        End If
        EmptyLIFO = True
        Overflow = False
        s1 = ""
        For i = 1 To Len(s)
            e = Mid(s, i, 1)    'Очередной символ
            If e <> " " Then
                Push e
            Else
                s1 = s1 + " "
                Do While Not EmptyLIFO
                    Pop e
                    s1 = s1 + e
                Loop
            End If
        Next i
        s1 = s1 + " "
        Do While Not EmptyLIFO
            Pop e
            s1 = s1 + e
        Loop
        s1 = Trim(s1)
        Sheets("Лист1").Cells(2, 1).Value = s1
    End Sub


Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.