교수님 ppt에 있는 코드를 복사하여 실행했는데 while문에서 'str' object has no attribute 'isTail' 에러가 발생했습니다. 제가 실행한 코드를 바탕으로 어느 부분에서 잘못 됐는지 알려주시면 감사하겠습니다.
class Node:
nodeNext = ''
objValue = ''
blnHead = False
blnTail = False
def __init__(self, objValue='', nodeNext = '', blnHead = False, blnTail = False):
self.nodeNext = nodeNext
self.objValue = objValue
self.blnTail = blnTail
self.blnHead = blnHead
def getValue(self):
return self.objValue
def setValue(self, objValue):
self.objValue = objValue
def getNext(self):
return self.nodeNext
def setNext(self, nodeNext):
self.nodeNext = nodeNext
def isHead(self):
return self.blnHead
def isTail(self):
return self.blnTail
node1 = Node(objValue='a')
nodeTail = Node(blnTail = True)
nodeHead = Node(blnHead = True, nodeNext = node1)
class SinglyLinkedList:
nodeHead = ''
nodeTail = ''
size = 0
def __init__(self):
self.nodeHead = Node(blnHead = True, nodeNext = self.nodeTail)
self.nodeTail = Node(blnTail = True)
def insertAt(self, objInsert, idxInsert):
nodeNew = Node(objValue = objInsert)
nodePrev = self.get(idxInsert - 1)
nodeNext = nodePrev.getNext()
nodePrev.setNext(nodeNew)
nodeNew.setNext(nodeNext)
self.size = self.size + 1
def removeAt(self, idxRemove):
nodePrev = self.get(idxRemove - 1)
nodeRemove = nodePrev.getNext()
nodeNext = nodeRemove.getNext()
nodePrev.setNext(nodeNext)
self.size = self.size - 1
return nodeRemove.getValue()
def get(self, idxRetrieve):
nodeReturn = self.nodeHead # (nodeTail, '', False, True)
for itr in range(idxRetrieve + 1):
nodeReturn = nodeReturn.getNext() # nodeReturn(nodeHead's next node) = nodeTail
return nodeReturn # nodeHead ('a', 0)
def printStatus(self):
nodeCurrent = self.nodeHead
while nodeCurrent.getNext().isTail() == True: # nodeHead.getNext() -> nodeNew reference.isTail()
nodeCurrent = nodeCurrent.getNext()
print(nodeCurrent.getValue(), end=" ")
print("")
def getSize(self):
return self.size
list1 = SinglyLinkedList()
list1.insertAt('a', 0)
list1.insertAt('b', 1)
list1.insertAt('d', 2)
list1.insertAt('e', 3)
list1.insertAt('f', 4)
list1.printStatus()
list1.insertAt('c', 2)
list1.printStatus()
list1.removeAt(3)
list1.printStatus()
comment