알고리즘

큐 구현

khkg12 2023. 8. 7. 15:32

node 구조체를 이용한 큐 구현

 

#include <iostream>

using namespace std;

// Queue
// 줄서기, 먼저들어온놈이 먼저 처리되는 것
// 선입선출

struct Node {
	Node* next = nullptr;
	int value;
	
	Node(int value) 
	{
		this->value = value;
	}
};

class Queue {
	int size = 0;
public:
	Node* start = nullptr;
	Node* end = nullptr;
	int GetSize() {
		return size;
	}
	bool IsEmpty() {
		return (bool)(size <= 0);
	}
	void Push(int value) {
		Node* newNode = new Node(value);
		if (IsEmpty()) { // 비어있다면 start와 end를 막 들어온 node를 가리키도록
			start = newNode;
			end = newNode;
		}
		else { // 비어있지 않다면
			end->next = newNode;
			end = newNode;
		}
		size++;
	}
	// 앞에거 뽑아오기
	int Pop() {
		int result = -1;
		if (IsEmpty()) {
			cout << "비어있습니다" << endl;
			return result;
		}
		Node* temp = start; // start의 주소를 갖고 있음
		result = start->value;
		start = start->next;
		delete temp;
		size--;
		return result;
	}
};


void main() {
	Queue queue;
	queue.Push(10);
	queue.Push(20);
	queue.Push(30);

	cout << queue.GetSize() << endl;
	cout << queue.start->value << endl;
	cout << queue.end->value << endl;
	cout << queue.Pop() << endl;
	cout << queue.Pop() << endl;
	cout << queue.Pop() << endl;
};