Удаление элементов стека - PullRequest
1 голос
/ 24 марта 2020

Этот код должен принимать вход ABCDEFG и извлекать из него элементы, используя стеки. Например: ADCDEFG и take D должны возвращать ABCEFG. Не уверен, почему он ничего не возвращает, кроме []. Я почти уверен, что функция стека классов работает так же, как раньше работала с другими кодами, возможно, в моей функции удаления? Какие-либо предложения? Я думаю, что мне нужно добавить что-то еще, просто не совсем уверен, что.

class Stack:
    def __init__(self):
        self.items = []

    def isEmpty(self):
        return self.items == []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek(self):
        return self.items[len(self.items)-1]

    def size(self):
        return len(self.items)

    def __str__(self):
        temp = Stack()
        stringy = ""
        while not self.isEmpty():
            a = self.pop()
            temp.push(a)
            stringy = str(a) + stringy
        while not temp.isEmpty():
            self.push(temp.pop())
        return "["+stringy+")\n"        

def remove(Fstack, item):
    Ustack = Stack()
    #this loop will repeat itself until the stack is empty
    while Fstack.isEmpty() == False:
        out = Fstack.pop()
        #If the numbers being pushed out are NOT the target, add them to a new stack
        if out != item:
            #pushes out aka all numbers not target into Ustack aka new atack
            Ustack.push(out)
            print(Ustack)
    return Fstack                


def main():
    letters = "ABCDEFG"
    st = Stack()
    for c in letters:
        st.push(c)

    first = "D"
    st = remove(st, first)   #now st should be [ABCEFG)
    print("after first", st.items)  #cheating a bit - the stack is a list so we print it

    second = "H"
    st = remove(st, second)  #st should still be [ABCEFG)
    print("after second", st.items)

    third = "A"
    st = remove(st, third)
    print("after third", st.items)
main()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...