자료구조 35

Graph (DFS, BFS) 자료구조 (C++)

" class vertex " - Graph의 정점을 저장하는 단위로 쓰이는 객체이다. 1. 변수 - int data : 정점의 data를 저장한다. - int degree : 정점의 인접한 vertex 수를 저장한다. - bool visited : 탐색시에 정점이 탐색되었는지 여부를 저장한다. - vector adj_list : 정점에 인접한 vertex를 vector로 저장한다. 2. 함수 - vertex(int data) : 셍성자 함수이며, data를 받아와 생성한다. 3. class vertex ADT class vertex { public: int data; int degree; bool visited; vector adj_list; vertex(int data) { this->data = d..

자료구조 2020.12.17

Hash Table 자료구조 (C++)

" class Cell " - key, value 값을 저장하는 단위로 쓰이는 객체이다. 1. 변수 - int key : key 값을 저장한다. - int value : value 값을 저장한다. - int flag : value값의 유뮤와 별개로 값이 있었는지 여부를 나타내는 값이 필요하다. 이를 저장한다. -> ISITEM(0), NOITEM(1), AVAILABLE(2) 로 저장한다. 2. 함수 - Cell() : 생성자 함수로, 초기화 작업을 한다. 3. class Cell ADT class cell { public: int key; int value; int flag; cell() { this->key = -1; this->value = -1; this->flag = NOITEM; } }; " ..

자료구조 2020.12.16

Binary Search Tree 자료구조 (C++)

" class Node " - Tree에 들어갈 데이터를 Node로 저장한다. 1. 변수 - int data : 데이터 저장한다. - Node* parent : 부모Node를 가르키는 포인터를 저장한다. - Node* leftChild : 왼쪽 자식을 가르키는 포인터를 저장한다. - Node* rightChild : 오른쪽 자식을 가르키는 포인터를 저장한다. 2. 함수 - 각 변수에 대해 get, set 함수가 필요하다 3. class Node ADT class Node { private: int data; Node* parent; Node* leftChild; Node* rightChild; public: Node() {//생략 } Node(int data) {//생략 } Node* getParent(..

자료구조 2020.12.16

Heap 기반 Priority Queue 자료구조 (c++)

" class Heap " 1. 변수 - vector v : heap에 값을 저장하기 위한 vector가 필요하다. - int root_idx : 보통 heap의 root index는 0이 아닌 1이 들어간다. 이를 저장하기 위한 변수이다. - int heap_size : 현재 heap에 몇가지 내용이 들어가있는지를 저장한다. 이는 마지막위치 index로 쓰이기도 한다. - int direction : Heap 구조가 MinHeap인지, MaxHeap 인지 구별점이 필요하다. 또한, upHeap 등에서 비교시에도 사용된다. 2. 함수 - int size() : heap_size를 반환한다. - int isEmpty() : heap_size가 0인지 여부를 반환한다. - void swap(int idx1,..

자료구조 2020.12.15

자료구조 클래스별 요약정리

1. class Array class Array { public: int arr_size = 10000; //Array의 크기가 필요하다 int* array; //동적할당을 위한 int포인터가 필요하다 int count = 0; //배열의 개수가 필요하다 int at(int idx) {} void set(int idx, int value) {} void add(int idx, int value) {} 2. Singly LinkedList class Node { public: int data; //값이 필요하다 Node* next; //다음노드 포인터가 필요하다 class SinglyLinkedList { public: Node* head; //첫노드 Node* tail; //끝노드 int empty() ..

자료구조 2020.10.30

Tree postorder (based Vector) 실습문제2

- 코드 #include #include using namespace std; // postorder 구현, 특정노드의 postorder 하며 leaf 노드의 경우 data 출력 class Node { public: int data; Node* parent; vector child_vector; Node(int data) { this->data = data; this->parent = NULL; } void setParent(Node* p) { this->parent = p; } void addChild(Node* p) { child_vector.push_back(p); } }; class Tree { public: Node* root; vector tree; Tree(int data) { this->r..

자료구조 2020.10.28

Tree Trevel (based Vector) 실습

1. 재귀 - base : 빠져나가는 조건을 만들어야 한다 - recersive : 반복하여 재귀를 부르는 부분 2. 전위순회 : pre order : 들르는 순서 그대로 - 자신을 방문하여 먼저 실행 후 자식노드를 방문하여 실행한다 3. 후위순회 : post order : 들르는 순서는 pre 이지만 실행이 post 이다 - 자신을 방문 후 자식노드를 방문하여 먼저 실행 후 자신을 실행한다 4. Tree : preorder(Node* p) - base : if(!p) : 만약 노드가 없을시 반환한다 - recursive : coutchild_vector.size() 까지 반복하여 증감시킨다 - preorder(p->child[i]) 실행한다 5. Tree : postorder(Node* p) - bas..

자료구조 2020.10.28

Tree (based vector) 실습

※ vector 개념 - vector myVector; : 선헌한다 - myVector.push_back(new data); : 새로운 값을 vector에 추가한다 - myVector.size(); : vector의 자료개수를 반환한다 - myVector[i]; : vector의 i번째 자료를 반환한다 - myVector.begin() : vector의 시작위치를 반환한다 - myVector.erase(myVector.begin()+i); : i번째 자료를 제거한다 1. class Node - int data : 값을 저장 - Node* par : 부모 노드를 가리키는 포인터 - vector child_vector : 자식들의 노드를 저장하는 벡터 2. Node : setParent(Node* paren..

자료구조 2020.10.28