이 영역을 누르면 첫 페이지로 이동
컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

페이지 맨 위로 올라가기

컴퓨터와 수학, 몽상 조금

컴퓨터공학, 딥러닝, 수학 등을 다룹니다.

8. 큐, 디큐 ADT (Queue, Dequeue)

  • 2020.05.29 21:38
  • 학부 수업/자료구조
반응형

큐Queue

큐 ADT는 임의의 개체들을 저장하며, 선입선출 (First In, First Out; FIFO)을 따른다.
삽입은 큐의 뒤(rear), 삭제는 큐의 앞(front)에서 수행한다.

주요 큐 함수

void enqueue(e);// 큐의 뒤에 원소를 삽입
elem dequeue(); // 큐의 앞에서 원소를 삭제하여 반환

elem front(); // 큐의 앞에 있는 원소를 반환
int size();
bool isEmpty();
iter elements();

큐의 응용

  • 직접 응용
    • 대기열, 관료적 체제
    • 공유자원에 대한 접근
    • 멀티프로그래밍
  • 간접 응용
    • 알고리즘 수행을 위한 보조 데이터구조
    • 다른 데이터구조의 구성 요소

배열 기반 큐

크기 N의 배열을 원형으로 사용한다. f와 r 두 개의 변수를 사용하여 front와 rear 위치를 기억한다. 이때, f가 일부러 front원소 한 칸 앞을 가르키도록 하는 응용도 가능하다.

빈 큐와 만원 큐를 차별화하기 위해, 한 개의 빈 방을 예비로 둔다.

함수의 구현

def size():
    return (N-f+r+1)%N
def isEmpty():
    return (r+1)%N == f
def isFull():
    return (r+2)%N == f

연결리스트 기반 큐

단일연결리스트를 사용하여 큐를 구현할 수 있다. 삽입과 삭제가 특정 위치에서만 수행되므로, 역방향링크는 불필요하다.

Dequeue ADT

Dequeue는 스택과 큐를 합친 방식으로 동작한다. 삽입과 삭제가 앞과 뒤 모두에서 이루어진다.

아래와 같은 주요 함수를 갖는다.

void push(e); // Front에 원소 삽입
elem pop(); // Front 위치의 원소를 삭제하여 반환
void inject(e); // Rear 위치에 원소 삽입
elem eject(); // Rear 위치의 원소를 삭제하여 반환

elem front();
elem rear(); // 각각 삭제없이 반환
int size();
bool isEmpty();

이중연결리스트를 활용하여 dequeue를 구현 가능한데, 삽입 삭제 위치가 정해져 있으므로 특별노드는 불필요하다.

반응형

'학부 수업 > 자료구조' 카테고리의 다른 글

10. 트리의 응용과 구현  (0) 2020.06.24
9. 트리 ADT (Tree)  (0) 2020.06.05
7. 스택 ADT  (0) 2020.05.14
6. 집합 ADT  (0) 2020.05.09
5. 리스트의 그룹과 공유  (0) 2020.04.23

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 10. 트리의 응용과 구현

    10. 트리의 응용과 구현

    2020.06.24
  • 9. 트리 ADT (Tree)

    9. 트리 ADT (Tree)

    2020.06.05
  • 7. 스택 ADT

    7. 스택 ADT

    2020.05.14
  • 6. 집합 ADT

    6. 집합 ADT

    2020.05.09
다른 글 더 둘러보기

정보

컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

  • 컴퓨터와 수학, 몽상 조금의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (276)
    • Tech Trend (3)
    • Deep Learning (77)
      • 공부 노트 (21)
      • 논문 리뷰 (44)
      • 논문 스키밍 (1)
      • 영상처리 (11)
    • Engineering (3)
      • Tips (2)
      • Experiences (1)
    • Blog (42)
      • 회고 & 계획 (16)
      • 내 이야기 (8)
      • 리뷰 (3)
      • 군대에 간 공돌이 (9)
      • ML엔지니어 취업 도전기 (1)
      • 여행 (4)
    • 학부 수업 (141)
      • 머신러닝 (16)
      • C프로그래밍 (8)
      • 자료구조 (11)
      • 알고리즘 (17)
      • 디지털시스템 (25)
      • 컴퓨터구조 (11)
      • 확률과 통계 (21)
      • 선형대수학 (14)
      • 이산수학 (18)
      • 데이터시각화 (0)
    • 강의 (9)
      • 딥러닝 기초 (7)
      • Python (2)

공지사항

인기 글

정보

백지오의 컴퓨터와 수학, 몽상 조금

컴퓨터와 수학, 몽상 조금

백지오

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
반응형

나의 외부 링크

  • profile
  • github
  • linkedin

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. © 백지오. Designed by Fraccino.

티스토리툴바