알고리즘
큐 구현
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;
};