본문 바로가기

Python 문법 정복하기

[Python] Array & LinkedList

연결리스트, 스택, 큐, 해시테이블, 힙 → 파이썬의 베이직 자료구조 5인방

자료구조는 알고리즘을 효율적으로 구현하기 위한 기초 체력이므로 제대로 공부해 봅니다.


 

Array vs. Linked LIst

 

 

  • Array : 파이썬의 리스트. 접근 쉬움, 삽입 어려움. (파이썬의 리스트)
  • LinkedList (연결리스트) : 직접 구현. 접근 어려움, 삽입 쉬움.

 

  Array LinkedList
특정 원소 조회 O(1) O(N)
중간에 삽입 삭제 O(N) O(1)
데이터 추가 데이터 추가 시 공간이 다 차버렸다면 새로운 메모리 공간을 할당받아야 한다. 공간이 다 찼어도 맨 뒤의 노드만 동적으로 추가하면 된다.
정리 데이터에 접근하는 경우가 빈번하면 Array 사용 삽입과 삭제가 빈번하면 LinkedList를 사용

 

 

 

연결리스트 구현 ▽

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next


class LinkedList:
    def __init__(self):
        self.head = None

    def append(self, val):
        if not self.head:
            self.head = ListNode(val, None)
            return

        node = self.head
        while node.next:
            node = node.next

        node.next = ListNode(val, None)

'Python 문법 정복하기' 카테고리의 다른 글

[Python] Queue 예제 (Josephus)  (0) 2024.03.23
[Python] Queue (FIFO)  (0) 2024.03.23
[Python] Stack 예제  (0) 2024.03.16
[Python] Stack (LIFO)  (0) 2024.03.12
[Python] 알고리즘 기초: 공간 복잡도  (0) 2024.03.10