반응형

큐(Queue)란?

큐는 연결 리스트와 스택과 유사하게 데이터를 저장하는 자료구조입니다.

  • 데이터 삽입이 한쪽 끝(뒤, rear)에서 이루어지고 삭제는 다른 쪽 끝(앞, front)에서 이루어지는 정렬된 리스트이다.
  • 선입선출(FIFO) 혹은 후입후출(LILO) 리스트라고 불린다.
  • 일반적으로 큐는 사람들이나 물건들이 한 줄로 서서 차례를 기다리는 것과 비슷하다.

큐의 자료구조

큐의 종류

  • 우선순위 큐(Priority Queue)
  • 선형 큐 (Linear Queue)
  • 원형 큐 (Circular Queue)

 

큐의 멤버 함수

  • q.front() : q의 맨 앞(front)의 원소 리턴

  • q.back() : q의 맨 뒤(rear)의 원소 리턴

  • q.push(x) : q의 맨 뒤에 x 원소 추가

  • q.pop() : q의 맨 앞(front)의 원소 삭제

  • q.size() : q의 사이즈(원소의 개수) 리턴

  • q.empty() : q의 사이즈(원소의 개수)가 0인지 아닌지 확인 (q가 비어있다면 1, 아니라면 0을 리턴)

 

 

예제 코드

#include<iostream>
#include<queue>
using namespace std;

int x;
queue<int> q;

int main() 
{
	cout << "\n<q에 데이터 삽입하기 전>\n";
	cout << "empty? : " << q.empty() << '\n';
	cout << "size : " << q.size() << '\n';

	// q에 1~5까지 데이터 순서대로 넣기
	for (int i = 1; i <= 5; i++) q.push(i);
	cout << "\n<q에 1~5까지 삽입>\n";
	cout << "empty? : " << q.empty() << '\n';
	cout << "size : " << q.size() << '\n';
	cout << "front : " << q.front() << '\n';
	cout << "back : " << q.back() << '\n';

	cout << "\n<pop()하고 6을 push()>\n";
	q.pop();
	q.push(6);
	cout << "empty? : " << q.empty() << '\n';
	cout << "size : " << q.size() << '\n';
	cout << "front : " << q.front() << '\n';
	cout << "back : " << q.back() << '\n';

}

 

실행결과

 

Queue의 경우 iterator가 존재하지 않으며 find함수를 사용할 수 없기 때문에 Verctor처럼 index를 통해 접근 혹은 탐색이 불가능하다는 점에 유의하세요.

 

 

큐 연습문제 추천

cocoon1787.tistory.com/232?category=831127

 

[C/C++] 백준 18258번 - 큐2

문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는

cocoon1787.tistory.com

 

 

반응형

+ Recent posts