공부/Data Structure 4

double linked list 구현

싱글 링크드 리스트와는 다르게 노드가 이전 노드와 이후 노드를 둘 다 가르기코 있음!.! 특이하게도 처음 생성자에서 head와 tail이 아무런 값을 가지고 있지 않은 더미 노드를 가르키게 만들어 준당 더블 링크드 리스트에선 특정 위치의 노드를 삭제하거나 삽입 할 때 노드들을 연결해주는 linkNodes를 구현했다 :) template class doubleLinkedList { public: // push back element! void push_back(T element) { node* newNode = new node(element); linkNodes(tail, newNode); ++size; } // find element at selected index node* findNode(int fi..

single linked list 구현

node 이용한 싱글 링크드 리스트 구현 :) 처음 실행 했을 때 버그도 안 나고 누수도 안 나서 살짝 당황했지만 잘 이해해서 다행이당! // single linked list class template class singleLinkedList { public: // push back element! void push_back(T element) { node* newNode = new node(element); if (head == nullptr) { head = newNode; tail = newNode; } else { tail->next = newNode; tail = newNode; } ++size; } // find element at selected index node* findNode(int..

queue 구현

stack과 비슷하게 동적으로 메모리하는 부분은 stl의 vector나 deque이용해서 쓰면 되지만 난 그냥 미리 할당된 메모리 공간에서 queue 간단하게 구현함! queue는 stack과 다르게 들어온 순서대로 데이터가 삭제된다! template class queue { public: // push element void Push(T element) { queueContainer[bottom] = element; ++bottom; } // pop top element void Pop(void) { if (bottom > top) { ++top; } } // return top element T Top(void) const { return queueContainer[top]; } // return b..

stack 구현

메모리를 동적으로 관리하거나 STL의 실제 스택처럼은 구현 안 함! 간단하게 어떤 원리로 동작하는지만 테스트하기 위한 코드임 :3 stack은 먼저 들어온 값이 가장 마지막으로 삭제 되고 가장 마지막에 들어온 값이 먼저 삭제되는 구조임 ;) #include using namespace std; template class stack { public: // push element void Push(T element) { stackContainer[size] = element; ++size; } // pop top element void Pop(void) { if (size > 0) { --size; } } // return top element T Top(void) const { return stackCon..