[자료구조/알고리즘] 연결리스트(Linked List)

Vitabin·2025년 1월 16일
0

자료구조/알고리즘

목록 보기
2/11

1.연결리스트 (Linked List)

  • 정의
    - 데이터를 링크로 연결해서 관리하는 자료구조
    - 선형 자료구조의 한 종류
  • 특징
    - 자료의 순서는 정해져 있지만 메모상 연속성이 보장되지 않음
  • 장점
    - 데이터 공간을 미리 할당할 필요가 없음
    - 데이터 추가/삭제가 편리함
  • 단점
    - 연결구조를 위한 별도의 데이터 공간 필요
    - 연결 정보를 찾는 시간이 필요(접근 속도가 일반적으로 느림)
    - 데이터 추가, 삭제 시 앞뒤 데이터를 연결구조 재구성이 필요
  • 구조
    - 노드(Node): 데이터 저장 단위로, 값과 포인터로 구성(포인터: 다음 노드나 이전 노드의 연결 정보)
    - 헤드(Head): 처음 위치에 존재하는 노드를 가르킴
    - 테일(Tail): 마지막 위치에 존재하는 노드를 가르킴
    https://harsh05.medium.com/linked-lists-data-structure-in-c-ef52fcee0e09

2.단방향 연결리스트(Singly Linked List)

  • 정의
    - 각 노드가 데이터, 다음 노드를 가르키는 포인터로 이우러진 연결리스트
  • 특징
    - 한 방향으로만 연결되어있기 때문에 다음 노드의 정보만 가진다
    - 마지막 노드는 Null을 가르킴
  • 단점
    - 특정 노드를 찾기위해선 처음부터 찾는 위치까지 순차적으로 탐색(시간 복잡도 O(N))

3.양방향 연결리스트(Doubly Linked List)

  • 정의
    - 각 노드 데이터, 이전 노드, 다음 노드를 가르키는 포인터로 이우러진 연결리스트
  • 특징
    - 양 방향으로 연결되어있기 때문에 앞 뒤로 탐색이 가능
  • 장점
    - 노드 삽입/삭제/수정이 단방향 연결리스트보다 효율적
    - 뒤에서부터 탐색이 가능

4. 원형 연결리스트(Circular Linked List)

  • 정의
    - 마지막 노드가 Null이 아닌 첫번째 노드를 가르키는 연결리스트
  • 특징
    - 단일 연결 리스트의 마지막 노드가 NULL이 아니라 첫 번째 노드를 가리킴
    - 이중 연결 리스트에서도 마지막 노드의 Next가 첫 번째 노드를, 첫 번째 노드의 Prev가 마지막 노드를 가리킴
  • 장점
    - 리스트의 처음과 끝을 구분할 필요가 없음
  • 단점
    - 리스트의 처음과 끝을 구분하지 않기 때문에 무한 루프에 빠질 가능성이 있음

5.시간복잡도

  • 접근, 탐색, 삽입, 삭제 모든 과정에서 O(n)을 가진다
  • 단 경우에 따라 Head나 Tail에 관한 연산의 경우 O(1)의 시간복잡도를 가진다

출처

연결리스트 이미지

0개의 댓글