내일배움캠프 알고리즘 2주차
데이터에 접근하는 경우가 빈번하다면 Array !
삽입, 삭제가 빈번하다면 Linked List !
class Node :
# data, next
def __init__(self, data) :
self.data = data
self.next = None
node = Node(3)
class LinkedList:
# head만 가지고 있으면 된다
def __init__(self, data) :
self.head = Node(data)
class LinkedList:
# head만 가지고 있으면 된다.
def __init__(self, data) :
self.head = Node(data)
def append(self, data) :
# head가 None일 때
if self.head is None:
# 노드를 생성해서 바로 붙여준다.
self.head = Node(data)
return
# head가 None이 아닐때
cur = self.head # cur 은 head를 가리킨다
while cur.next is not None: # 조건 : 다음노드가 없을때까지 반복
cur = cur.next # cur 을 다음노드를 가리키게 한다.
print("cur is ", cur.data)
cur.next = Node(data) # 다음노드가없다면(맨끝노드)
# node를 생성해서 붙인다.
def print_all(self) :
cur = self.head
while cur is not None:
print(cur.data)
cur = cur.next
def get_node(self, index):
node = self.head
count = 0
while count < index:
node = node.next
count += 1
return node
# index 번째에 새로운 노드추가
def add_node(self, index, value):
# 새로운 노드
new_node = Node(value)
# head 앞에다가 (맨 앞에) 노드를 추가하고싶을때
if index == 0 :
new_node.next = self.head # 새로운 노드의 next에 head를 걸어놓고
self.head = new_node # head가 새로운 노드(맨앞) 을 가리키게
return
# index번째 노드
node = self.get_node(index-1)
# index번째 노드의 다음거를 미리 저장
next_node = node.next
# node - new_node - next_node 형태로 새롭게 연결
node.next = new_node
new_node.next = next_node