SlideShare a Scribd company logo
Geun-Hyung Kim
UMCL @ Dong-Eui University
Introduction to
Queue
큐 (Queue) 개념
큐 (Queue)
데이터의 삽입과 삭제가 다른 곳에서 이루어지는 일정의 리스트
FIFO (First In First Out)
데이터 삽입이 일어나는 곳을 rear, 데이터 삭제가 일어나는 곳을 front라고 함
예: 프린터 스풀러, CPU 스케줄링, 서점에서 줄서기 등
큐를 구현하는 대표적인 방법: 배열을 이용하는 방법, 연결 리스트를 이용하는 방법
rear
front
큐 (Queue)
CPU 스케줄링
Multi-tasking 환경에서 CPU 자원이 필요한 프로세스들을 큐에 저장
데이터 버퍼
컴퓨터에서 프린터로 도착된 데이터를 순서대로 저장하여 처리
네트워크로 부터 전달받은 패킷을 순서대로 저장하여 처리
통신 네트워크 모델링과 시뮬레이션
네트워크의 노드와 연결로 구성된 네트워크 모델링과 시뮬레이션에 활용
큐 (Queue) 개념
큐의 응용
큐 (Queue): 개 요
큐 연산 예
enque(10);
enque(20);
enque(30);
deque();
enqueue:
dequeue:
isempty:
큐의 rear를 통해 데이터를 삽입하는 연산
큐의 front를 통해 큐에서 데이터를 삭제하는 연산
큐가 비었는지 검사하는 연산
front: 큐의 front 에 있는 데이터를 삭제하지 않고 데이터를 얻는 연산
frontrear
102030
Queue
큐 (Queue): 개 요
frontrear Queue
top
push()
pop()
enqueue() dequeue()
스택과 큐
Deque (Double Ended Queue)
큐의 양 끝에서 데이터의 삽입과 삭제가 허용되는 큐
“덱” 또는 “디큐” 라고 함
우선순위 큐 (Priority Queue)
큐에 들어온 순서와 무관하게 우선순위 (큰 값 혹은 작은 값)에 따라 가장
먼저 꺼내지는 큐
대표적인 구현 방법으로 이진 힙(binary heap)이 있음
큐 (Queue): 개 요
큐의 변형
큐에서 데이터 삽입은 rear에서 삭제는 front에서 일어남
연결리스트로 큐를 구현할 때 연결리스트의 앞을 front, 뒤를 rear로
설정하는 것이 유리
삽입을 하기 위해서 마지막 노드의 주소를 기억해야 함
연결리스트로 큐 구현
연결리스트로 구현
int
link
10 int
link
20 int
link
30 int
link
40
NULL
QNode QNode QNode QNode
Queue
rear
front
size 4
연결리스트를 이용한 큐 구현
queue.h 큐와 관련하여 구현한 함수의 프로토타입
struct queue *를 Queue 라는 자료형을
재 정의
Queue라는 자료형은 포인터 변수를 뜻함
Item의 자료형을 다른 자료형으로 수정하면
Queue를 그대로 사용 가능
연결리스트로 큐 구현
typedef struct QNode {
Item data;
QNode *link;
} QNode;
typedef struct {
QNode *front;
QNode *rear;
int size;
} Queue;
typedef int Item;
queue.h: data for queue implementation
연결리스트로 큐 구현
createQueue 함수 구현
#include <stdio.h>
#include <stdlib.h>
#include “queue.h”
연결리스트로 큐 구현
새로운 노드를 위한 메모리 할당
새로운 노드에 데이터 저장
Queue에 새로운 노드 추가
enQueue 함수 구현
연결리스트로 큐 구현
Queue 가 비워있는 경우 에러 발생
Queue front가 다음 노드를 가리키도록 처리
삭제한 노드 메모리 해제 및Queue 크기 줄이기
deQueue 함수 구현
연결리스트로 큐 구현
peek, getSize 함수 구현
배열로 큐 구현
배열로 큐를 구현할 때 문제점
초기상태(front = -1, rear = -1)
10 삽입 10
rear
20 삽입 10 20
rear
30 삽입 10 20 30
rear
40 삽입 10 20 30 40
rear
3번 deQueue 40 50
50 삽입 10 20 30 40 50
rear
Full
rearfront
Full 로 인지
( Not Empty)
2번 deQueue
rearfront
Full 로 인지
(Empty)
배열의 index를 더 증가시키지 못해서 빈 공
간이 있는데도 불구하고 데이터 저장을 못함
배열로 큐 구현
원형 큐
초기상태
rearfront
10 삽입 10
rearfront
20 삽입 10 20
rearfront
10 20 30
rearfront
10 20 30 40
rearfront
30 삽입
40 삽입 Full
40
rearfront
3번 deQueue
rearfront
1번 deQueue
50 삽입 50
50 60 70
50 60 70 80
60/70 삽입
80 삽입
rear front
front
front
rear
rear
배열로 큐 구현
원형 큐
알고리즘 고찰
front와 rear의 값 처리
front = (front + 1) % ARRAY_SIZE;
rear = (rear + 1) % ARRAY_SIZE:
비어 있다는 것을 아는 방법은 ?
front와 rear 가 같은 값을 가지는 경우
return front == rear
차 있다는 것을 아는 방법은 ?
(rear + 1) % ARRAY_SIZE == front
배열로 큐 구현
원형큐: cqueue.h
원형 큐의 저장 공간
원형 큐 관련 정보
원형큐 포인터 변수 타입 재 정의
원형큐 관련 함수의 프로토타입
배열로 큐 구현
createCircularQueue 함수
원형 큐 정보 저장 영역 할당
원형 큐 데이터 영역 할당
원형 큐 관련 정보 초기화
배열로 큐 구현
deleteCircularQueue 함수 ..
원형 큐 데이터 영역 해제
원형 큐 정보 저장 영역 해제
원형 큐 데이터가 저장될 rear 값 설정
원형 큐에 데이터 저장
원형 큐 데이터가 저장될 front 값 설정
원형 큐에 저장된 데이터의 수 감소
원형 큐의 데이터 반환
원형 큐에 저장된 데이터의 수 감소
배열로 큐 구현
front 값 변경없이 원형 큐의 데이터 반환
front 값과 rear 값이 같은 경우 원형 큐는 비워있음
rear값이 front 값보다 1 작으면 포화상태임
front, rear, size 값을 초기화
size 값을 반환
front 함수..

More Related Content

PDF
4. stack
PDF
3. linked list
PDF
알고리즘과 자료구조
PDF
말의여행
PDF
자료구조02
PDF
Project#2말의여행 Hwp
PDF
[Swift] Data Structure - Dequeue
PPT
1.자료구조와 알고리즘(강의자료)
4. stack
3. linked list
알고리즘과 자료구조
말의여행
자료구조02
Project#2말의여행 Hwp
[Swift] Data Structure - Dequeue
1.자료구조와 알고리즘(강의자료)

What's hot (20)

PPTX
R 프로그래밍 기본 문법
PPTX
R 기본-데이타형 소개
PPTX
R 프로그래밍-향상된 데이타 조작
PDF
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
PPTX
R 프로그램의 이해와 활용 v1.1
PPTX
종이접기(fold) 프로그래밍
PPTX
하스켈 프로그래밍 입문
PDF
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
PDF
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
PPTX
하스켈 프로그래밍 입문 2
PDF
[SOPT] 데이터 구조 및 알고리즘 스터디 - #04 : 트리 기초, 이진 트리, 우선순위 큐
PDF
알고리즘 스터디(정렬) Seungdols
PDF
Python Programming: Function
PDF
[SOPT] 데이터 구조 및 알고리즘 스터디 - #05 : AVL 트리
PDF
R 스터디 네번째
PDF
ES6 for Node.js Study 3주차
PPTX
Initializer list
PDF
Data Structure - 1st Study
PDF
2012 Ds 03
PPTX
Data Mining with R CH1 요약
R 프로그래밍 기본 문법
R 기본-데이타형 소개
R 프로그래밍-향상된 데이타 조작
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
R 프로그램의 이해와 활용 v1.1
종이접기(fold) 프로그래밍
하스켈 프로그래밍 입문
[SOPT] 데이터 구조 및 알고리즘 스터디 - #02 : 스택, 큐, 수식 연산
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
하스켈 프로그래밍 입문 2
[SOPT] 데이터 구조 및 알고리즘 스터디 - #04 : 트리 기초, 이진 트리, 우선순위 큐
알고리즘 스터디(정렬) Seungdols
Python Programming: Function
[SOPT] 데이터 구조 및 알고리즘 스터디 - #05 : AVL 트리
R 스터디 네번째
ES6 for Node.js Study 3주차
Initializer list
Data Structure - 1st Study
2012 Ds 03
Data Mining with R CH1 요약
Ad

Viewers also liked (20)

PDF
Baekjoon Online Judge 1451번 풀이
PDF
How the Collapse of Marriage Hurts Children and Three Steps to Reverse the Da...
PDF
Cld learning partner case studies dec 2014
DOC
LinkedIn Profile.doc-SABARI
PPTX
Why David Fall into Temptation
PDF
FINAL TO USE INFO GPH WE BUY
PDF
Baekjoon Online Judge 10986번 풀이
PDF
Baekjoon Online Judge 1648번 풀이
PDF
Baekjoon Online Judge 1201번 풀이
PPTX
Event Express 360⁰
PDF
Baekjoon Online Judge 2873번 풀이
PDF
Baekjoon Online Judge 3015번 풀이
PDF
Baekjoon Online Judge 1019번 풀이
PPT
Any screen available
PDF
Cover super looking for you !
PDF
Coder’s High 2014 풀이
PPT
Teflon - Anti Stick for the browser attack surface
PDF
2014 ACM-ICPC Daejeon 인터넷 예선 해설
PPT
The history of teflon
Baekjoon Online Judge 1451번 풀이
How the Collapse of Marriage Hurts Children and Three Steps to Reverse the Da...
Cld learning partner case studies dec 2014
LinkedIn Profile.doc-SABARI
Why David Fall into Temptation
FINAL TO USE INFO GPH WE BUY
Baekjoon Online Judge 10986번 풀이
Baekjoon Online Judge 1648번 풀이
Baekjoon Online Judge 1201번 풀이
Event Express 360⁰
Baekjoon Online Judge 2873번 풀이
Baekjoon Online Judge 3015번 풀이
Baekjoon Online Judge 1019번 풀이
Any screen available
Cover super looking for you !
Coder’s High 2014 풀이
Teflon - Anti Stick for the browser attack surface
2014 ACM-ICPC Daejeon 인터넷 예선 해설
The history of teflon
Ad

Similar to 5. queue (20)

PDF
[Swift] Data Structure - Queue
PPTX
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
PDF
자료구조 큐
PPTX
02. data structure and stl
PDF
2021 1학기 정기 세미나 6주차
PDF
데이터 분석 6 - 나만의 배열 기반 LIST, MyLinkedList를 만들어보자
PPTX
파이썬 스터디 15장
PPT
강의자료5
PDF
Python + Excel
PDF
파이썬 데이터베이스 연결 1탄
PDF
자료구조 2014-2018년 출석수업대체시험 기출문제
PDF
데이터 분석 5 - Java Collection Framework - LinkedList 파헤치기
PDF
android_thread
PDF
데이터 분석 3 - Java Collection Framework와 ArrayList
PDF
데이터 분석 4 - 나만의 배열 기반 LIST, MyArrayList를 만들어보자
PPTX
Basic Data Structure stack&queue
PPTX
불어오는 변화의 바람, From c++98 to c++11, 14
PDF
[Algorithm] Counting Sort
PDF
Function calling convention
PDF
사칙연산 프로그램
[Swift] Data Structure - Queue
[GPG 스터디] 1.4 게임프로그래밍에서의 STL 활용
자료구조 큐
02. data structure and stl
2021 1학기 정기 세미나 6주차
데이터 분석 6 - 나만의 배열 기반 LIST, MyLinkedList를 만들어보자
파이썬 스터디 15장
강의자료5
Python + Excel
파이썬 데이터베이스 연결 1탄
자료구조 2014-2018년 출석수업대체시험 기출문제
데이터 분석 5 - Java Collection Framework - LinkedList 파헤치기
android_thread
데이터 분석 3 - Java Collection Framework와 ArrayList
데이터 분석 4 - 나만의 배열 기반 LIST, MyArrayList를 만들어보자
Basic Data Structure stack&queue
불어오는 변화의 바람, From c++98 to c++11, 14
[Algorithm] Counting Sort
Function calling convention
사칙연산 프로그램

5. queue

  • 1. Geun-Hyung Kim UMCL @ Dong-Eui University Introduction to Queue
  • 2. 큐 (Queue) 개념 큐 (Queue) 데이터의 삽입과 삭제가 다른 곳에서 이루어지는 일정의 리스트 FIFO (First In First Out) 데이터 삽입이 일어나는 곳을 rear, 데이터 삭제가 일어나는 곳을 front라고 함 예: 프린터 스풀러, CPU 스케줄링, 서점에서 줄서기 등 큐를 구현하는 대표적인 방법: 배열을 이용하는 방법, 연결 리스트를 이용하는 방법 rear front 큐 (Queue)
  • 3. CPU 스케줄링 Multi-tasking 환경에서 CPU 자원이 필요한 프로세스들을 큐에 저장 데이터 버퍼 컴퓨터에서 프린터로 도착된 데이터를 순서대로 저장하여 처리 네트워크로 부터 전달받은 패킷을 순서대로 저장하여 처리 통신 네트워크 모델링과 시뮬레이션 네트워크의 노드와 연결로 구성된 네트워크 모델링과 시뮬레이션에 활용 큐 (Queue) 개념 큐의 응용
  • 4. 큐 (Queue): 개 요 큐 연산 예 enque(10); enque(20); enque(30); deque(); enqueue: dequeue: isempty: 큐의 rear를 통해 데이터를 삽입하는 연산 큐의 front를 통해 큐에서 데이터를 삭제하는 연산 큐가 비었는지 검사하는 연산 front: 큐의 front 에 있는 데이터를 삭제하지 않고 데이터를 얻는 연산 frontrear 102030 Queue
  • 5. 큐 (Queue): 개 요 frontrear Queue top push() pop() enqueue() dequeue() 스택과 큐
  • 6. Deque (Double Ended Queue) 큐의 양 끝에서 데이터의 삽입과 삭제가 허용되는 큐 “덱” 또는 “디큐” 라고 함 우선순위 큐 (Priority Queue) 큐에 들어온 순서와 무관하게 우선순위 (큰 값 혹은 작은 값)에 따라 가장 먼저 꺼내지는 큐 대표적인 구현 방법으로 이진 힙(binary heap)이 있음 큐 (Queue): 개 요 큐의 변형
  • 7. 큐에서 데이터 삽입은 rear에서 삭제는 front에서 일어남 연결리스트로 큐를 구현할 때 연결리스트의 앞을 front, 뒤를 rear로 설정하는 것이 유리 삽입을 하기 위해서 마지막 노드의 주소를 기억해야 함 연결리스트로 큐 구현 연결리스트로 구현 int link 10 int link 20 int link 30 int link 40 NULL QNode QNode QNode QNode Queue rear front size 4
  • 8. 연결리스트를 이용한 큐 구현 queue.h 큐와 관련하여 구현한 함수의 프로토타입 struct queue *를 Queue 라는 자료형을 재 정의 Queue라는 자료형은 포인터 변수를 뜻함 Item의 자료형을 다른 자료형으로 수정하면 Queue를 그대로 사용 가능
  • 9. 연결리스트로 큐 구현 typedef struct QNode { Item data; QNode *link; } QNode; typedef struct { QNode *front; QNode *rear; int size; } Queue; typedef int Item; queue.h: data for queue implementation
  • 10. 연결리스트로 큐 구현 createQueue 함수 구현 #include <stdio.h> #include <stdlib.h> #include “queue.h”
  • 11. 연결리스트로 큐 구현 새로운 노드를 위한 메모리 할당 새로운 노드에 데이터 저장 Queue에 새로운 노드 추가 enQueue 함수 구현
  • 12. 연결리스트로 큐 구현 Queue 가 비워있는 경우 에러 발생 Queue front가 다음 노드를 가리키도록 처리 삭제한 노드 메모리 해제 및Queue 크기 줄이기 deQueue 함수 구현
  • 13. 연결리스트로 큐 구현 peek, getSize 함수 구현
  • 14. 배열로 큐 구현 배열로 큐를 구현할 때 문제점 초기상태(front = -1, rear = -1) 10 삽입 10 rear 20 삽입 10 20 rear 30 삽입 10 20 30 rear 40 삽입 10 20 30 40 rear 3번 deQueue 40 50 50 삽입 10 20 30 40 50 rear Full rearfront Full 로 인지 ( Not Empty) 2번 deQueue rearfront Full 로 인지 (Empty) 배열의 index를 더 증가시키지 못해서 빈 공 간이 있는데도 불구하고 데이터 저장을 못함
  • 15. 배열로 큐 구현 원형 큐 초기상태 rearfront 10 삽입 10 rearfront 20 삽입 10 20 rearfront 10 20 30 rearfront 10 20 30 40 rearfront 30 삽입 40 삽입 Full 40 rearfront 3번 deQueue rearfront 1번 deQueue 50 삽입 50 50 60 70 50 60 70 80 60/70 삽입 80 삽입 rear front front front rear rear
  • 16. 배열로 큐 구현 원형 큐 알고리즘 고찰 front와 rear의 값 처리 front = (front + 1) % ARRAY_SIZE; rear = (rear + 1) % ARRAY_SIZE: 비어 있다는 것을 아는 방법은 ? front와 rear 가 같은 값을 가지는 경우 return front == rear 차 있다는 것을 아는 방법은 ? (rear + 1) % ARRAY_SIZE == front
  • 17. 배열로 큐 구현 원형큐: cqueue.h 원형 큐의 저장 공간 원형 큐 관련 정보 원형큐 포인터 변수 타입 재 정의 원형큐 관련 함수의 프로토타입
  • 18. 배열로 큐 구현 createCircularQueue 함수 원형 큐 정보 저장 영역 할당 원형 큐 데이터 영역 할당 원형 큐 관련 정보 초기화
  • 19. 배열로 큐 구현 deleteCircularQueue 함수 .. 원형 큐 데이터 영역 해제 원형 큐 정보 저장 영역 해제 원형 큐 데이터가 저장될 rear 값 설정 원형 큐에 데이터 저장 원형 큐 데이터가 저장될 front 값 설정 원형 큐에 저장된 데이터의 수 감소 원형 큐의 데이터 반환 원형 큐에 저장된 데이터의 수 감소
  • 20. 배열로 큐 구현 front 값 변경없이 원형 큐의 데이터 반환 front 값과 rear 값이 같은 경우 원형 큐는 비워있음 rear값이 front 값보다 1 작으면 포화상태임 front, rear, size 값을 초기화 size 값을 반환 front 함수..