Python/자료구조
[python] dummy node 활용한 Linked List
by 덤더리덤떰
2023. 11. 14.
class Node:
def __init__(self, item):
self.data= item
self.next = None
class LinkedList:
def __init__(self):
self.nodeCount =0
self.head = Node(None)
self.tail = None
self.head.next = self.tail
def traverse(self):
result =[]
cur= self.head.next
while(cur is not None):
result.append(cur.data)
cur=cur.next
return result
def getAt(self, pos):
if pos<0 or pos > self.nodeCount:
return None
i=0
cur = self.head
while(i<pos):
cur = cur.next
i+=1
return cur
def insertAfter(self, prev, newNode):
newNode.next = prev.next
if(prev.next== None):
self.tail = newNode
prev.next = newNode
self.nodeCount+=1
return True
def insertAt(self, pos, newNode):
if(pos<1 or pos> self.nodeCount+1):
return False
if(pos!=1 and pos== self.nodeCount+1):
prev = self.tail
else:
prev = self.getAt(pos-1)
return self.insertAfter(prev, newNode)
def popAfter(self, prev):
if(prev.next==None):
return None
delNode = prev.next
if(prev.next==self.tail):
self.tail = prev
prev.next = delNode.next
self.nodeCount-=1
return delNode.data
def popAt(self, pos):
if(pos<1 or pos>self.nodeCount):
raise IndexError
prev = self.getAt(pos-1)
return self.popAfter(prev)
def concat(self, L):
self.tail.next = L.head.next
self.tail = L.tail
self.nodeCount+=L.nodeCount