바로 직전에는 큐를 만들어 보았다. 내친김에 스택도 만들어 보았다. 확실히 단순하고 구현하기 쉬웠다.
#pragma once
#include "Node.h"
template <typename T>
class Stack {
Node<T>* topNode;
int stack_size;
public:
Stack() {
topNode = new Node<T>();
stack_size = 0;
}
bool empty() {
return stack_size == 0;
}
int size() {
return stack_size;
}
void push(T data) {
Node<T>* newNode = new Node<T>(data);
if (empty()) {
topNode->next = newNode;
}
else {
newNode->next = topNode->next;
topNode->next = newNode;
}
stack_size++;
}
T pop() {
if (empty()) {
return NULL;
}
Node<T>* returnNode = topNode->next;
topNode->next = topNode->next->next;
T return_value = returnNode->data;
delete(returnNode);
return return_value;
}
T top() {
return topNode->next->data;
}
};