ADT(추상자료형)의 구체적 시작

데이터를 관리하기위한 추상자료형과 자료구조 도구들

자료구조 핵심 : ADT(Abstract Data Type)

💡 생각하는 시간 : ADT를 활용하는 이유?

linked-list(연결리스트)

🔍 자세히보기 : 리스트와 연결리스트

# 연결리스트의 노드를 저장하는 첫 단계

class Node:
  def __init__(self,value,next=None):
    self.value = value  # 노드의 값을 나타내는 value
    self.next = next  # 노드의 다음위치를 가리키는 next의 초기값은 None

class linked_list:
  def __init__(self,value):
    self.head = Node(value) # 초기 클래스에 head노드선언

  def add_node(value):
    print('head.value:', head.value)
    print('head.next:', head.next)
    node = head           # 첫번째 위치에 해당하는 head를 생성하고, node 변수에 저장
    while node.next:      # head노드의 다음위치에 노드가 생성될 때까지 반복문 진행
      node = node.next    # head노드의 다음위치에 노드가 있는 경우(두번째 노드라고 가정),
      print('print in while:', node.next)
                          # 두번째 노드부터 node변수에 저장
    node.next = Node(value) # 데이터를 노드 다음위치에 저장
# 연결리스트의 노드값들에 대해

head = Node(5)    # head노드에 값5를 저장
linked_list.add_node(11) # 값11을 추가

print(head.value) # head노드의 값은 5
print(head.next.value) # head노드의 다음위치노드의 값은 11
# 리스트를 연결
node1 = Node(3)
node2 = Node(4)

node3 = Node(5)
node4 = Node(6)

node1.next = node2
node2.next = node3
node3.next = node4

node = node1        # 첫번째노드부터 시작
while node:         # 노드별로 반복문을 수행
  print(node.value)
  node = node.next  # 다음노드를 현재노드에 저장하면서 위치를 바꿈