CS

[์ž๋ฃŒ๊ตฌ์กฐ] ํ (Queue)

2024. 10. 30. 16:56

ํ (Queue) ๋ž€?

    • ํ๋Š” FIFO(First In, First Out) ๊ตฌ์กฐ๋กœ, ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
    • ์Šคํƒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋จผ์ €๋“ค์–ด์˜จ๊ฒƒ์ด ๋จผ์ €๋‚˜๊ฐ€๋Š” FIFO ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๋‹ค.

์žฅ๋‹จ์ 

์žฅ์ 

  • ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ O(1) ์‹œ๊ฐ„์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๊ฐ€ ๋œ๋‹ค.

๋‹จ์ 

  • ์ค‘๊ฐ„๊ณผ ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผํ•˜๋ ค๊ณ ํ•˜๋ฉด ๋น„ํšจ์œจ์ ์ด๋‹ค.

๊ตฌํ˜„

#include <queue> ์‚ฌ์šฉ

#include <iostream>
#include <queue>

using namespace std;

int main(void) {

	queue<int> q;

	q.push(1);
	q.push(2);
	q.push(3);
	cout << q.front() << "\n"; // output : 1
	q.pop();
	cout << q.front() << "\n"; // output : 2

	if (!q.empty()) {
		cout << "not empty" << "\n"; // output : not empty
	}
	if (q.size()) {
		cout << "size : " << q.size() << "\n"; // output : size : 2
	}

	return (0);
}

 

deque๋ฅผ ํ™œ์šฉํ•œ ๊ตฌํ˜„

#ifndef CUSTOMQUEUE_HPP_
#define CUSTOMQUEUE_HPP_

#include <iostream>
#include <deque>

template <typename T>
class CustomQueue 
{
	private:
		std::deque<T> c;
		int _size;
	public:
		CustomQueue() {};
		~CustomQueue() {};

		void push(T data) {
			c.push_back(data);
		}
		T pop() {
			T temp = c.front();
			c.pop_front();
			return temp;
		}
		size_t size() const {
			return c.size();
		}
		bool empty() const {
			return c.empty();
		}
		T front() const {
			return c.front();
		}
};

#endif
  • queue์— ๊ฒฝ์šฐ์—๋Š” stack๊ณผ ๋‹ค๋ฅด๊ฒŒ FIFO๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ๋•Œ๋ฌธ์— list๋‚˜ deque๊ฐ™์€ ๋™์ ํ• ๋‹น๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์ง€์•Š์œผ๋ฉด ๋ฐฐ์—ด์˜ ์žฌ์‚ฌ์šฉ์ด ์ด๋ฃจ์–ด์ง€์ง€์•Š๊ธฐ๋•Œ๋ฌธ์— ๋‚ญ๋น„๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋งŽ๊ธฐ๋•Œ๋ฌธ์— deque ๋ฐฉ์‹ ์‚ฌ์šฉ
  • stack๊ณผ queue์˜ ์‹ค์ œ ๊ตฌํ˜„์—์„œ๋„ deque๋ฐฉ์‹์ด ์‚ฌ์šฉ๋˜์–ด ์ธํ„ฐํŽ˜์ด์Šค ์ œํ•œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋˜์–ด์žˆ๋‹ค.
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'CS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์ž๋ฃŒ๊ตฌ์กฐ] ํŠธ๋ฆฌ (Tree)  (0) 2024.11.07
[์ž๋ฃŒ๊ตฌ์กฐ] ๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ (Linked list)  (0) 2024.10.30
[์ž๋ฃŒ๊ตฌ์กฐ] ์Šคํƒ (Stack)  (0) 2024.10.29
[์ž๋ฃŒ๊ตฌ์กฐ] ๋ฐฐ์—ด (Array)  (0) 2024.10.29
[์ž๋ฃŒ๊ตฌ์กฐ] ์ž๋ฃŒ๊ตฌ์กฐ (data structure)  (0) 2024.10.29
  1. ํ (Queue) ๋ž€?
  2. ์žฅ๋‹จ์ 
  3. ๊ตฌํ˜„
moaoh
moaoh
๋‚˜์˜ ์„ฑ์žฅ ์ผ๊ธฐ.
moaoh
๐Ÿถ ๐Ÿพ
moaoh
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • Github
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • Algorithm
      • ๊ฐœ๋…์ •๋ฆฌ
      • ๋ฌธ์ œํ’€์ด
    • 42seoul
      • projects
    • CS
    • programming language
      • C++
      • Javascript
      • Go
      • Python
      • Front-end
      • Java
    • Java Spring
    • git
    • ์ผ์ƒ
      • ์ฑ… ์ฝ๊ธฐ

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ
moaoh
[์ž๋ฃŒ๊ตฌ์กฐ] ํ (Queue)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.