본문 바로가기

알고리즘

자료구조 ) LinkedList (연결리스트)의 기본 구성

1. Linked list의 노드 class 기본 구성

#리스트 노드
class ListNode:
    def __init__(self, val, next):
        self.val = val
        self.next = next

 

2. linked list 기본 구조

class LlinkedList:

    def __init__ (self):
        #리스트 가장 첫번째 요소
        self.head = None

    #삽입
    def append(self, val):
        if not self.head:
            self.head = ListNode(val, None)
            return
        
        node = self.head
        #가장 마지막 노드로 가는 코드 (next 가 있는 동안 쭉 )
        while node.next:
            node = node.next
        node.next = ListNode(val, None)

__init__ 을 통해 head를 지정한다. append 에서는 첫 번째 노드(head)를 가리킨 다음, while 문을 이용해 next 를 가리키고 있는 노드라면 반복문을 계속 실행하게 한다. 마지막 노드에 도달했을 때 새로운 노드의 value 를 반환한다.

 

 

 

이후 링크드리스트 클래스를 활용해 아래 lst를 링크드리스트화 한다면 아래와 같다.

 

lst = [1, 2, 3]
l1 = LinkedList()

for e in lst:
	l1.append(e)