목록ComputerScience (34)
Nagie's DevStory
아래는 C++로 구현된 이진 트리(Binary Tree)의 소스 코드다. 연결리스트처럼 노드 개념이 존재하고 자료의 계층 구조를 나타낼 때 사용하며 뿌리(root), 가지(branch), 잎(leaves) 등의 개념을 사용하여 데이터를 구성한다. //Tree.h 내용 #pragma once #include #include struct Node { char data; Node* left; Node* right; Node(char d) :data(d),left(nullptr), right(nullptr){} }; void preorder(Node* node) { //전위 순회 if (node) { std::cout data left); preorder(node->right); } } void inorder(..
아래의 코드는 C++로 구현된 덱(Deque)이다. std::deque가 동작하는 결과를 보고 std::vector를 사용해 흉내만 내봤다. #pragma once #include template class MyDeque { private: std::vector data; public: void pushFront(const T& item) { data.insert(data.begin(), item); } void pushBack(const T& item) { data.push_back(item); } void popFront() { if (!isEmpty()) { data.erase(data.begin()); } } void popBack() { if (!isEmpty()) { data.pop_back(..
아래의 코드는 C++로 구현된 환형 큐(Circular Queue)다. 일반 큐와 유사하지만 고정된 크기의 버퍼를 사용해 데이터를 순환하면서 자료를 저장하는 구조를 띠고 있으며 구현에 사용되는 std::vector 대신 일반적인 C 스타일 배열을 사용할 수도 있었지만, STL이 제공하는 편의성 때문에 C 스타일 배열을 사용하지 않았다. #pragma once #include template class CircularQueue { private: std::vector buffer; int front; // 큐의 시작 인덱스 int rear; // 큐의 끝 인덱스 int capacity; public: CircularQueue(int size) { capacity = size; buffer.resize(si..
아래의 코드는 C++로 구현된 큐(Queue)다. 가변 배열과 연결 리스트로 각각 구현되어 있으며 큐는 FIFO(First-In-First-Out) 원칙을 따르는 컨테이너 어댑터이기에 내부에서 사용하는 자료구조는 C++ STL에서 제공하는 std::vector와 std::list 컨테이너를 사용해 구현했다. std::vector(가변 배열)로 구현된 큐 #pragma once #include template class queue { private: std::vector vecQueue; public: void push(const T& data) { vecQueue.push_back(data); } void pop() { vecQueue.pop_back(); } bool isEmpty() const { r..
아래의 코드는 C++로 구현된 스택(Stack)이다. 가변 배열과 연결 리스트로 각각 구현되어 있으며 큐는 LIFO(Last-In-First-Out) 원칙을 따르는 컨테이너 어댑터이기에 내부에서 사용하는 자료구조는 C++ STL에서 제공하는 std::vector와 std::list 컨테이너를 사용해 구현했다. std::vector(가변배열)로 구현된 스택 #pragma once #include template class stack { private : std::vector vecStack; public : void push(const T& data) { vecStack.push_back(data); } void pop() { if (vecStack.empty()){ return; } vecStack.po..