포트폴리오/[IoT 기반 피지컬 AI 교육일지]

[ 7일차 복습 ] Doubly Linked List & Queue & Deque

개발자혜콩 2026. 2. 11. 16:16

1. 오늘 학습내용

① 이중 링크드 리스트 (Doubly Linked List)

 (1) 구조

  • 각 노드가
    • prev : 이전 노드 주소
    • next : 다음 노드 주소
  • 단일 링크드 리스트보다 탐색이 유연
typedef struct Node {
    int data;
    struct Node* prev;
    struct Node* next;
} Node;

(2) 특징

  • 양방향 이동 가능
  • 삽입·삭제 시 이전 노드 접근이 쉬움
  • 대신 포인터 2개 사용 → 메모리 사용 증가

(3) 구현 기능

  • 노드 추가 (앞 / 뒤)
  • 노드 삭제
  • 전체 출력 (정방향 / 역방향)

 


 

② 큐 (Queue)

(1) 개념

  • FIFO (First In First Out)
  • 먼저 들어온 데이터가 먼저 나감

(2) 주요 연산

  • enqueue : 데이터 삽입
  • dequeue : 데이터 제거
  • front : 맨 앞 데이터 확인

(3) 구현 방식

  • 배열 기반
  • 링크드 리스트 기반

③ 데크 (Deque, Double-Ended Queue)

(1) 개념

  • 양쪽에서 삽입·삭제 가능
  • 큐 + 스택 기능 포함

(2) 주요 연산

  • addFront
  • addRear
  • removeFront
  • removeRear

(3) 특징

  • 이중 링크드 리스트 구조와 궁합 좋음

2. 헷갈렸던 거

  • 단일 링크드 리스트 vs 이중 링크드 리스트 차이
  • 노드 삭제 시 prev와 next 연결 순서
  • 큐에서 front와 rear 포인터 관리
  • 데크와 큐의 구조적 차이
  • 메모리 해제 시 실수 가능성

 

3. 나중에 다시 볼 키워드

  • Doubly Linked List
  • prev / next 연결 순서
  • FIFO
  • enqueue / dequeue
  • Deque
  • front / rear 포인터
  • 동적 할당 & free