Почему я получаю последнее оставшееся значение (например, здесь 10) в стеке при выполнении dequeue () более трех раз? - PullRequest
0 голосов
/ 29 мая 2020
class Node:
    def __init__(self,data):
        self.data=data
        self.prev=None
        self.next=None

class Stack:
    def __init__(self):
        self.top=None

    def enqueue(self,x):
        n=Node(x)
        if(self.top==None):
            self.top=n
        temp=self.top
        temp.next=n
        n.prev=temp
        self.top=n

    def dequeue(self):
        if(self.top==None):
            print("Stack Underflow!")
            return
        k=self.top
        # self.top=None
        self.top=k.prev
        print(k.data)
        del k


s=Stack()
s.enqueue(10)
s.enqueue(20)
s.enqueue(30)
s.dequeue()
s.dequeue()
s.dequeue()
s.dequeue()

Я получаю 10, когда удаление из очереди выполняется в четвертый раз, но, согласно моему логу c, я должен получить сообщение «stack underflow!» потому что я уже установил значение self.top в третьей очереди на предыдущее из 10, что равно None. и каждый раз после третьего удаления из очереди я получаю значение 10.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...