코딩/자료구조

[자료구조] 큐(queue)

Hun die 2022. 7. 4. 12:03

큐는 리스트의 일종으로 스택의 LIFO (Last - In  First -Out) 구조가 아닌 FIFO (First - In  First -Out) 구조를 가지고 있다.

 

FIFO는 (First - In  First -Out) 이름과 같이 가장 처음에 들어간 데이터가 가장 먼저 나오는 구조이다.

삽입이 일어나는 쪽을 뒤(Rear) 삭제가 일어나는 쪽을 (Front)라고 한다.

 

프린트 큐, CPU스케줄링, 데이터 버퍼, BFS 등에 사용된다.

 

queue 만들기

 

#include <queue> //큐를 사용하기 위해 필요한 헤더

queue<int> Q; //변수명 Q로 큐를 만듬  queue<데이터 형식> 변수 명

먼저 queue를 만들기 위해선 먼저 <queue> 라는 헤더를 가져올 필요가 있다.

그리고 큐를 만들기 위해  queue<데이터 형식> 변수 명 을 사용한다.

 

push

 

	for (int i = 0; i < 5; i++)
	{
		Q.push(i);
	}
    //Q  -> { 0, 1, 2, 3, 4 }

push는 queue에 값을 넣을수 있는데 stack와는 반대로 뒤에 차곡차곡 값이 쌓인다.

 

pop
Q.pop();
 //Q  -> { 1, 2, 3, 4 }

pop는 값을 지우는데 넣은 순서와는 반대로 앞의 값을 지운다.

 

front, back

 

Q.front() // queue의 제일 앞에있는 값을 리턴한다.
Q.back() // queue의 제일 뒤에있는 값을 리턴한다.

//Q  -> { 1, 2, 3, 4 }
//front 는 1,  back는 4

front는 queue의 가장 앞에 있는 값을 리턴한다.

back는 queue의 가장 뒤에 있는 값을 리턴한다.

 

empty

 

	if (Q.empty())
	{
		cout << "큐가 비었음";
	}
	else
	{
		cout << "큐가 안 비었음";
	}

empty는 queue가 비었는지 확인하는데 비어있다면 True를 비어있지 않다면 false값을 반환한다.

 

size

 

Q.size()//큐의 사이즈 확인
//현재 Q에는 { 1, 2, 3, 4 } 가 들어 있으므로 4가 리턴됨

size는 queue에 들어있는 값의 수를 리턴한다.

예시에는 { 1, 2, 3, 4 } 4개의 값이 들어 있어 4를 리턴한다.

'코딩 > 자료구조' 카테고리의 다른 글

[자료구조] 이진 검색 트리  (0) 2022.07.06
[자료구조] 그래프  (0) 2022.07.04
[자료구조] 스택(Stack)  (0) 2022.07.04
[자료구조] 연결 리스트  (0) 2022.06.20
[자료구조] 시간 복잡도 와 공간 복잡도  (0) 2022.06.07