파이썬
[자료구조] Python으로 linked list 구현하기
Mara7
2023. 5. 2. 19:59
LIST
class Node: # 노드 정의
def __init__(self, value):
self.value = value
self.next = None
class LinkedList: # 링크드리스트 정의
def __init__(self): # 초기화
self.head = None # 링크드리스트의 맨 앞
self.tail = None # 링크드리스트의 맨 뒤
self.current = None # 링크드리스트의 현재값
self.before = None # 링크드리스트의 현재값의 전 값
def move_next(self): # 다음으로 이동하는 기능
if self.current.next is None: # 지금값을 가리키는 다음 값이 none이면 none 출력
return None # none 출력
else:
self.before = self.current
self.current = self.current.next
return self.current.next.value
def get(self): # 현재 값을 가져오는 기능
if self.current.value is None:
return None
else:
return self.current.value
def add(self, value): # 현재 위치의 값을 추가하는 기능 현재값은 뒤로 감
new_node = Node(value)
if self.head is None: # 첫번재 값이 없다면
self.head = new_node # 맨앞의 값이 지금 값
self.tail = new_node # 맨 뒤에 값도 지금 값
self.current = new_node # 현재값도 지금 값
else: # 아니다. 앞에 있따. 이 값에 뒤에 값 추가
new_node.next = self.current # 현재 값의 다음 값은 지금 값의 다음 값
self.current.next = new_node
self.before = self.current.value
def delete(self): # 현재 위치의 값을 삭제하는 기능
if self.current is None:
return None
elif self.current == self.head:
self.head = self.current.next
def move_front(self): # 맨처음으로 이동
self.current = self.head
self.before = None
lst = LinkedList()
lst.add(1)
print(lst.get()) # 3
lst.add(2)
lst.move_next()
print(lst.get())
lst.add(3)
lst.move_next()
print(lst.get())
lst.move_front()
print(lst.get())
반응형
LIST