자료구조론47 [자료구조] C++로 쉽게 풀어쓴 자료구조 : 11장, 그래프 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다. 1) 11장. 그래프(Graph) Graph의 ADT " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 데이터: 정점의 집합과 간선의 집합 연산: - creat(): 그래프를 생성한다. - isEmpty(): 그래프가 비어있는지 확인한다. - insertVertex(v): 그래프에 정점 v를 삽입한다. - insertEdge(u, v): 그래프에 간선 (u, v)를 삽입한다. - deleteVertex(v): 그래프의 정점 v를 삭제한다. - deleteDdge(u, v): 그래프의 간선(u, v)를 삭제한다. - adjacent(v): 정점 v에 인접한 모든 정점의 집합을 반.. CS/Data Structure (2021-1) 2022. 1. 15. [자료구조] C++로 쉽게 풀어쓴 자료구조 : 10장, 힙 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다. 10장. 힙(Heap) " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 힙은 부모 노드의 키 값이 자식 노드의 키 값보다 큰(or작은) 이진트리 를 말한다. A가 B의 부모 노드라고 가정하면, key(A) >= key(B) 인경우가 최대 힙이 되며, key(A) HTML 삽입 미리보기할 수 없는 소스 insert(key) heapSize HTML 삽입 미리보기할 수 없는 소스 void heapSort(int a[], int n) { MaxHeap h; for (int i = 0; i = 0.. CS/Data Structure (2021-1) 2022. 1. 15. [자료구조] C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 9-1 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다. 프로그래밍 프로젝트 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 1) 9.2절에서 이진 탐색 트리의 탐색 연산을 트리 클래스에서 구현했고 노드 클래스에서도 구현해 보았다. 트리의 각 노드들을 모두 자신을 루트로 하는 서브트리를 대표한다고 보면 많은 트리의 연산들을 노드에서 구현할 수 있다. 8장의 프로그램 8.1과 프로그램 8.2를 수정하여 BinaryTree 클래스에서 구현했던 다음 멤버함수들을 BinaryNode 클래스에서 구현해라. void BinaryNode::inorder(); void BinaryNode::preorder(); void BinaryNode::po.. CS/Data Structure (2021-1) 2022. 1. 15. C++로 쉽게 풀어쓴 자료구조 : 9장, 이진 탐색 트리 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다. 1) 9장. 이진 탐색 트리 이진 탐색 트리는 이진트리 기반의 탐색을 위한 자료구조로 효율적인 탐색 작업을 위한 구조이다. 1) 모든 노드는 유일한 키를 갖는다. 2) 왼쪽 서브트리의 키들은 루트의 키보다 작다. 3) 오른쪽 서브트리의 키들은 루트의 티보다 크다. 4) 왼쪽과 오른쪽 서브트리도 이진 탐색 트리이다. 정의 9.1 245페이지 Binary Search Tree ADT " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 데이터: Binary Search Tree의 특성을 만족하는 이진트리: 어떤 node x의 왼쪽 서브트리의 key들은 x의 key보다 작고, 오른쪽의 .. CS/Data Structure (2021-1) 2022. 1. 15. C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 8 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다. 프로그래밍 프로젝트 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 (1) 이진트리가 완전 이진트리인지를 검사하는 연산 (2) 임의의 node의 레벨을 구하는 연산을 구현한다, 만약 node가 트리 안에 있지 않으면 0을 반환한다. (3) 이진트리의 모든 노드에서 왼쪽 서브트리와 오른쪽 서브트리의 높이의 차이가 2보다 작으면 이 트리를 균형잡혀있다라고 한다. 현재 이진트리가 균형 잡혀 있는지를 검사하는 다음 연산을 구현한다. (4) 이진트리에서 경로의 길이를 루트에서부터 모든 자식 노드까지의 경로의 길이의 합이라고 하자. 경로의 길이를 구하는 연산을 구현한다 (5) 이진트리를.. CS/Data Structure (2021-1) 2022. 1. 14. [자료구조] C++로 쉽게 풀어쓴 자료구조 : 8장, 트리 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다. 1) 8장. 트리 대부분의 교제에서 가르치는 트리중 대표가 아마 이진트리 일 것 이다. 이진트리의 정의를 간략히 살펴보자! 1) 공집합이거나 2) 루트와 왼쪽 서브트리, 오른쪽 서브트리로 구성된 노드들의 유한 집합으로 정의된다. 이진트리의 서브트리들은 모두 이진트리여야 한다. 정의 8.1 299페이지 Binary Tree 의 ADT " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 데이터: 노드와 간선의 집합. 노드는 공집합이거나 공집합이 아니라면 루트노드와 양쪽 서브트리로 구성된다. 모든 서브트리는 이진트리여야 한다. 연산: - create(): 이진트리를 생성한다. - is.. CS/Data Structure (2021-1) 2022. 1. 14. [자료구조] C++로 쉽게 풀어쓴 자료구조 : 7장, 순환 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다. 1) 7장. 순환 이번장은 재귀, 순환에 대하여 배웠다. 사실 재귀는 친숙하면서도 새로운 개념이다. 이전에도 재귀를 사용해 미로 찾기, 하노이탑 등등 몇가지 문제들을 접한적이 있는데, 이번시간에도 다시 점검한다는생각으로 배웠다. 간단하게 미로찾기 코드정도만 올려야 겠다. 교제와 다른 방식으로 구현한 미로찾기 #include #include using namespace std; const int N = 8; const int PATHWAY = 0; const int WALL = 1; const int BLOCKED = 2; const int PATH = 3; int maze[N][N] = { {0,0,0,0,.. CS/Data Structure (2021-1) 2022. 1. 14. [자료구조] C++로 쉽게 풀어쓴 자료구조 : 5장, Linked List 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다. 1) 5장. 연결리스트 연결리스트의 개념 자체는 어렵지는 않다. Node마다 데이터를 저장하는 곳과, 다음 node를 가리킬 포인터변수가 있으며, 이를 필요할때마다 추가하면서 기차처럼 이어가는 형태이다. 열혈 자료구조에서도 C로 여러번 구현한 내용이다. Node class안에 Student 객체를 포함시키는 일반적인 방법이 난 가장먼저 떠올랐다. 다음처럼 말이다. class Node { Student st; // 데이터 필드 Node* link; // 링크 필드 public: ... }; 열혈 자료구조를 공부할때 이런 형태로 많이 구현해봤기 때문이다. 하지만 C++의 장점을 활용하는 코드가 나의 머리를 강타.. CS/Data Structure (2021-1) 2022. 1. 14. [자료구조] C++로 쉽게 풀어쓴 자료구조 : 4장, Queue 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다. 1) 4장. queue. deque Queue의 ADT " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 데이터: 선입선출(FIFO)의 접근 방법을 유지하는 요소들의 모음 연산: - enqueue(e): 주어진 요소 e를 큐의 맨 뒤에 추가한다. - dequeue(): 큐가 비어 있지 않으면 맨 앞 요소를 삭제하고 반환한다. - isEmpty(): queue가 비어있는지의 유무를 bool값으로 반환 - isFull(): queue가 가득 차있는지의 유무를 bool값으로 반환 - peek(): queue가 비어있지 않으면 맨 앞의 요소를 확인해본다. - size(): queue의.. CS/Data Structure (2021-1) 2022. 1. 14. [Design Patterns] Proxy Pattern : 프록시 패턴 Proxy Pattern 이란? Proxy Pattern - 어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴 위의 정의에서 접근을 제어하는 프록시는 어떤 것 일까요? 아래에서 배울 뽑기 기계의 경우 프록시가 원격 객체에 대한 접근을 제어하고 있다고 생각하면 됩니다. 원격 프록시가 접근을 제어해서 네트워크 관련사항들을 챙겨줬다 할 수 이는거죠. 대표적인 접근을 제어하는 방법을 알아봅시다. ▶ 원격 프록시를 써서 원격 객체에 대한 접근을 제어할 수 있습니다. ▶ 가상 프록시를 써서 생성하기 힘든 자원에 대한 접근을 제어할 수 있습니다. ▶ 보호 프록시를 써서 접근 권한이 필요한 자원에 대한 접근을 제어할 수 있습니다. 클래스 다이어그램도 한번 살펴볼까요? Pr.. BackEnd/Design Patterens 2022. 1. 13. [Design Patterns] Factory Pattern : 팩토리 패턴 Head First Design Patterns 책을 읽으며 정리한 내용입니다. 문제가 될 시 글을 내리도록 하겠습니다! Factory Pattern 이란? " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 1) 팩토리 메소드 패턴 객체를 생성하기 위한 인터페이스 정의하는데, 어떤 클래스의 인스턴스를 만드는지는 서브클래스에서 결정하게 만듭니다. 이 패턴을 사용하면 클래스의 인스턴스를 만드는 일을 서브클래스에서 책임지는 것입니다. 위의 다이어그램을 보면 Creator에는 제품을 갖고 원하는 일을 하기 위한 메소드 들이 구현되어 있습니다. 하지만 제품을 만들어주는 FactoryMethod()는 추상 메소드로 정의되어 있을 뿐 구현되어 있지는 않습니다. 따라서 모든 서브클래스 에.. BackEnd/Design Patterens 2022. 1. 13. 이전 1 2 3 4 다음