# Node 클래스 선언
class Node(object):
def __init__(self, data):
self.data = data
self.next = None
# linked list 클래스 선언
class LinkedList:
def __init__(self):
self.head = None
self.count = 0
def insert(self, data, current=self.count):
new_node = Node(data)
# 리스트에 노드가 하나도 없을 때
if self.head == None:
self.head = new_node
# 리스트 맨 처음에 넣고 싶을 때
elif current == 0:
new_node.next = self.head
self.head = new_node
# 리스트 중간 혹은 마지막에 넣고 싶을 때
else:
temp1 = self.head # head를 참조하여 첫번째 노드를 찾아 temp1에 저장
current -= 1
while current != 0: # new_node를 이전 노드의 next로 지정하기 위해 temp1에 이전 노드를 저장하기 위한 반복문
temp1 = temp1.next
current -= 1
temp2 = temp1.next
temp1.next = new_node
new_node.next = temp2
self.count += 1
# 중복 data가 없다는 가정 하에 data를 비교하여 삭제
def delete(self, data):
# 리스트에 노드가 하나도 없을 때
if self.count == 0:
print("linked list empty!!!")
return False
# data가 첫 노드의 데이터와 같을 때
elif data == self.head.data:
deleted_data = self.head.data
self.head = self.head.next
self.count -= 1
print("deleted data : ", deleted_data)
return deleted_data
# 그 외
else:
before = self.head # 이전
current = self.head.next # 현재
check = 0
while check != self.count:
if data == current.data:
deleted_data = current.data
after = current.next
before.next = after
self.count -= 1
print("deleted data : ", deleted_data)
return deleted_data
else:
before = current
current = before.next
print("no data")
def search(self, data):
def print(self):
current = self.head
if self.count == 0:
print("linked list empty!!!")
return None
for i in range(self.count):
print(current.data)
current = current.next
def listNum(self):
return self.count
참고 사이트
생활코딩 : https://opentutorials.org/module/1335/8821
visualgo : https://visualgo.net/ko/list
https://daimhada.tistory.com/72