Я пытаюсь распечатать программу, чтобы она выглядела так.
Вставка 1
Вставка 2
Вставка 3
Верхний элемент 3
Удаление 3
Удаление 2
Удаление 1
Стек пуст
Но когда я запускаю программу, я пропустил «Вставка 1». Мой код выглядит так
class Node:
def __init__(self,data):
self.data = data
self.next = None
class Stack:
def __init__(self):
self.head = None
def isempty(self):
if self.head == None:
return True
else:
return False
def push(self,data):
if self.head == None:
self.head=Node(data)
else:
newnode = Node(data)
newnode.next = self.head
self.head = newnode
print("Inserting ", str(self.head.data))
def pop(self):
if self.isempty():
return None
else:
poppednode = self.head
self.head = self.head.next
poppednode.next = None
print("Removing",poppednode.data)
return poppednode.data
def peek(self):
if self.isempty():
return None
else:
return self.head.data
def display(self):
iternode = self.head
if self.isempty():
print("The stack is empty")
else:
while(iternode != None):
print(iternode.data,"->",end = "")
iternode = iternode.next
return
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print("Top element is ",stack.peek())
stack.pop()
stack.pop()
stack.pop()
stack.display()
извините, сейчас отредактировал
Когда вы нажимаете в первый раз, self.head будет None, и он не перейдет в состояние else, где печатается «Вставка 1».
Когда вы впервые нажимаете элемент, селф.голова имеет значение None, поэтому выполняется первый блок кода. Удалите отступ строки print('Insert'), чтобы она печаталась в обоих случаях.
def push(self,data):
if self.head == None:
self.head = Node(data)
else:
newnode = Node(data)
newnode.next = self.head
self.head = newnode
print("Inserting ", str(self.head.data)) # <== unindent 1-level
Не могу увидеть ваш код.