singly linked list를 만들어보는 코드를 작성중에 insertAt()에서 Node 클래스의 메소드 getNext()를 호출하는 과정에서 계속 오류가 나네요,,
'str' object has no attribute 'getNext' 이렇게 나오는데 제가 코드를 잘못 적은 것인가 아닌가 잘 모르겠네요.
제가 쓴 코드 첨부해봅니다...
class Node:
nodeNext = None
nodePrev = ''
objValue = ''
binHead = False
binTail = False
def __init__(self, objValue='', nodeNext=None, binHead=False, binTail=False):
self.nodeNext = nodeNext
self.objValue = objValue
self.binHead = binHead
self.binTail = binTail
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.binHead
def isTail(self):
return self.binTail
class SinglyLinkedlist:
nodeHead = ''
nodeTail = ''
size = 0
def __init(self):
self.nodeTail = Node(binTail=True)
self.nodeHead = Node(binHead=True, nodeNext=self.nodeTail)
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
for itr in range(idxRetrieve + 1):
nodeReturn = nodeReturn.getNext()
return nodeReturn
def printStatue(self):
nodeCurrent = self.nodeHead
while nodeCurrent.getNext().isTail() == False:
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.printStatue()
list1.insertAt('c', 2)
list1.printStatue()
list1.removeAt(3)
list1.printStatue()
comment