Я новичок в python, и теперь у меня проблема в этой программе.Python: Linklist deque addfront & addrear
Сначала вот NodeList: < -linklist
class Node:
def __init__(self,initdata):
self.data = initdata
self.next = None
def getData(self):
return self.data
def getNext(self):
return self.next
def setData(self,newdata):
self.data = newdata
def setNext(self,newnext):
self.next = newnext
И вот моя программа:
from NodeList import Node
class DequeLL:
def __init__(self):
self.head = None
self.last = None
self.length = 0
def addFrontDLL(self, item):
temp = Node(str(item))
temp.setNext(self.head)
self.head = temp
length = max(len(node.data) for node in self.allNodes()) if self.head else 0
print('\u2510{}\u250c'.format(' '*length))
for node in self.allNodes():
print('\u2502{:<{}}\u2502'.format(node.data, length))
print('\u2514{}\u2518'.format('\u2500'*length))
def addRearDLL(self, item):
node = Node(str(item))
node.next = None
if self.length == 0:
self.head = self.last = node
else:
last = self.last
last.next = node
self.last = node
self.length = self.length + 1
length = max(len(node.data) for node in self.allNodes()) if self.head else 0
print('\u2510{}\u250c'.format(' '*length))
for node in self.allNodes():
print('\u2502{:<{}}\u2502'.format(node.data, length))
print('\u2514{}\u2518'.format('\u2500'*length))
def allNodes(self):
node = self.head
while node is not None:
yield node
node = node.next
d = DequeLL()
Все было хорошо, когда я добавить элемент в addFrontDLL. Но после добавления элемента в addRearDLL его как элемент добавляется в другой контейнер. Затем я попытался добавить с помощью addFrontDLL еще раз, и он работает так, как я хочу (элемент добавлен в этот другой контейнер). Смотрите рисунок ниже:
Я надеюсь, что кто-то объяснить и исправить это для меня. Любая помощь будет оценена. Спасибо.