C++ 136

C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 11 (1)

[TestRandomGraph.cpp]/*(1)정점의 수와 간선의 수를 입력하면 무작위로 그래프를 발생시키는 함수를 구현하라.단, 정점 사이에 중복된 간선이 존재하지 않아야 한다. 생성된 그래프를 화면에 출력하고, 파일에 저장하라.정점의 이름은 'A'로부터 시작하여 하나씩 증가시키도록 한다. (2) (1)을 이용하여 무작위로 그래프를 발생시키고 프로그램 11.13의 연결 성분 탐색을 참고하여 연결된 성분의 개수를 출력하라 (3) (1) 알고리즘을 보완하여 모든 정점이 연결된 "연결 그래프"를 무작위로 발생시키는 다음 함수를 구현한다. (2) 와 같이 연결된 성분의 개수가 1이 되는지 확인한다.*/#include "ConnectedComponentGraph.h" int main(void){ Connecte..

C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 10

[1번]/*힙을 이용하지 않고 우선순위 큐를 작성하려고 한다.정렬되지 않은 1차원 배열을 이용해 우선순위 큐 클래스MaxPriorityQueue를 다음과 같이 작성한다.*/#include #include #include using namespace std; #define MAX_ELEMENT 100 class MaxPriorityQueue{private: int elem[MAX_ELEMENT]; //요소의 배열 int size; //현재 요소의 개수public: MaxPriorityQueue() { size = 0; } int getParent(int i) { return i / 2; } int getLeft(int i) { return i * 2; } int getRight(int i) { return..

C++ Fundamentals of Data Structures(C++ 자료구조론) 7.2 InsertionSort(삽입정렬) 예제+Exercises

[삽입정렬 예제]/*Insertion Sort Example삽입 정렬 예시*/#include using namespace std; /*Insertion into a sorted list*/template void Insert(const T &e, T *a, int i){ a[0] = e; while (e < a[i]) { a[i + 1] = a[i]; i--; } a[i + 1] = e;} /*Insertion Sort*/template void InsertionSort(T *a, const int n){ for (int j = 2; j < n; j++) { T temp = a[j]; Insert(temp, a, j - 1); }} int main(void){ //책의 간단한 예시를 참고한 코드 int ..

C++ Fundamentals of Data Structures(C++ 자료구조론) 7.1 Sorting(정렬) 예제

/*Fast Verifications of two lists리스트끼리의 비교(빠른 버젼)*/#include #include #include using namespace std; //순차적 탐색/*template int SeqSearch(E *a, const int n, const K &k){ int i; for (i = 1; i n) return 0; return i;}*/ //Verify2와 동일한 역할을 하는 함수/*void Verify1(Element *l1, Element *l2, const int n, const int m){ bool *marked = new bool[m + 1]; fill(marked + 1, marked + m + 1, false); for (i = 1; i

C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 9 (2)

다른 함수들은 http://jaimemin.tistory.com/230 참고하시면 됩니다 [SequentialSearch.cpp]/*순차탐색이란 정렬되지 않은 배열에서 탐색하고자 하는 숫자를 배열의 각 요소와순차적으로 비교하여 탐색하는 방법을 말한다. 이진 탐색 트리의 성능을일반배열에서의 순차 탐색과 비교해보자(1)다음과 같은 순차 탐색 함수 sequentialSearch()를 작성한다(2)프로그램이 시작되면 먼저 n개의 랜덤한 정수를 발생시켜 배열에 저장한다. 가능한 평균적인 탐색 시간을 측정하기 위해 역시 랜덤한 수를 r개 발생시키고(r은 10 내외), 각각을 배열에서 순차 탐색으로 찾고 실행시간을 측정한다. 이 때 반드시 탐색 연산에 걸린 시간만을 측정해야하는 것에 주의한다. sequentialSe..

C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 9 (1)

[BinaryNode.h]/*9.2절에서 이진 탐색 트리의 탐색 연산을 트리 클래스에서 구현했고 노드 클래스에서도 구현해 보았다.트리의 각 노드들을 모두 자신을 루트로 하는 서브트리를 대표한다고 보면 많은 트리의 연산들을 노드에서 구현할 수 있다.8장의 프로그램 8.1과 프로그램 8.2를 수정하여 BinaryTree 클래스에서 구현했던 다음 멤버함수들을 BinaryNode 클래스에서 구현해라.void BinaryNode::inorder();void BinaryNode::preorder();void BinaryNode::postorder();//아래 세 함수는 고민을 해봐도 BinaryNode *root 없이 어떻게 구현해야할지 모르겠습니다//그리고 굳이 BinaryNode.h에서 구현해야하나 싶어 구현하..

C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 8

[BinaryTree.h] /*이진트리 클래스의 구현연산 추가(1) 이진트리가 완전 이진트리인지를 검사하는 연산(2) 임의의 node의 레벨을 구하는 연산을 구현한다, 만약 node가 트리 안에 있지 않으면 0을 반환한다.(3) 이진트리의 모든 노드에서 왼쪽 서브트리와 오른쪽 서브트리의 높이의 차이가 2보다 작으면 이 트리를 균형잡혀있다라고 한다. 현재 이진트리가 균형 잡혀 있는지를 검사하는 다음 연산을 구현한다.(4) 이진트리에서 경로의 길이를 루트에서부터 모든 자식 노드까지의 경로의 길이의 합이라고 하자. 경로의 길이를 구하는 연산을 구현한다(5) 이진트리를 좌우로 대칭시키는 연산을 구현한다*/#include "TreeCircularQueue.h" class BinaryTree{private: Bin..

C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 7

[1번 문제]/*순환적인 방법으로 피보나치 수열을 호출하였을 때 함수가 중복되어 호출되는 것을확인할 수 있도록 각 함수의 매개변수별 호출 빈도를 측정해 출력하라*/#include using namespace std; //순환적인 피보나치수열 계산 프로그램int fibonacci(int *count, int n){ count[n]++; if (n == 0) return 0; if (n == 1) return 1; return (fibonacci(count, n - 1) + fibonacci(count, n - 2));} int main(void){ int num; cout > num; int *count = new int[num+1]; for (int i = 0; i < num + 1; i++) count..