C++/C++로 쉽게 풀어쓴 자료구조 23

C++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 14 3번 문제

mapRecord.h/*간단한 재고 관리 프로그램을 STL의 맵 클래스를 이용하여 만들어보자.다음과 같은 필드가 레코드 안에 존재하여야 한다.5자리의 부품 번호(키필드), 10자 이내의 부품 설명, 재주문 여부(yes or no), 현재 재고량이 재고 관리 프로그램을 사용하는 사용자는 다음과 같은 연산들을 수행할 수 있어야한다.재고 목록에 새로운 부품을 추가, 재고 목록에서 부품 검색, 키 필드를 제외한 부품의 임의의 필드 변경*/#include #include #include using namespace std; class Record{private: string instruction; string reorder; int stock;public: Record(string i="", string r=""..

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

/*1)0에서 n 사이의 난수를 발생하여 배열에 저장하는 다음 함수를 구현하라2)다양한 n 값에 대해 1번의 함수를 이용해 난수를 발생시키고 각 알고리즘으로 정렬하라. 이 때 각 알고리즘의 실행시간을 측정하라.*/#include #include "MinHeap.h"#include "CircularQueue.h"#include #include #include #include //시간 재기 위해using namespace std; #define MAX_SIZE 1024 static void PrintArray(int arr[], int n, char *str = "Array"); inline void swap(int &x, int &y){ int temp = x; x = y; y = temp;} //선택정렬..

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

[1번 문제] [WGraph.h] /*인접 행렬로 구현된 가중치 그래프 클래스*/#include "AdjMatGraph.h"#define INF 9999 //값이 INF 이상이면 간선이 없음 class WGraph :public AdjMatGraph //AdjMatGraph 상속{public: void insertEdge(int u, int v, int weight) { if (weight > INF) weight = INF; setEdge(u, v, weight); } void insertBothEdge(int u, int v, int weight) { if (weight > INF) weight = INF; setEdge(u, v, weight); setEdge(v, u, weight); } bool..

C++로 쉽게 풀어쓴 자료구조 프로그래밍 12장 Dijkstra & Floyd 알고리즘 예제

AdtMatGraph.h와 WGraph.h는 http://jaimemin.tistory.com/252?category=970810 참고하시기 바랍니다. [WGraphDijkstra.h]#include "WGraph.h" class WGraphDijkstra :public WGraph{private: int dist[MAX_VTXS]; //시작노드로부터의 최단경로 거리 bool found[MAX_VTXS]; //방문한 정점 표시public: //방문하지 않은 정점들 중에서 최단 경로 거리가 가장 작은 정점을 찾아 반환 int chooseVertex() { int min = INF; int minpos = -1; for (int i = 0; i < size; i++) { if (dist[i] < min &&..

C++로 쉽게 풀어쓴 자료구조 프로그래밍 12장 Kruskal & Prim 알고리즘 예제

생각보다 오류가 많은데 정오표에도 기제되어있지 않아 직접 포스팅합니다. [AdjMatGraph.h]/*인접 행렬을 이용한 그래프 클래스 프로그램*/#include #include #include using namespace std; #define MAX_VTXS 256 //표현 가능한 최대 정점의 개수 class AdjMatGraph{protected: int size; //정점의 개수 char vertices[MAX_VTXS]; //정점의 이름 int adj[MAX_VTXS][MAX_VTXS]; //인접 행렬public: AdjMatGraph() { reset(); } char getVertex(int i) { return vertices[i]; } int getEdge(int i, int j) { r..

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++로 쉽게 풀어쓴 자료구조 프로그래밍 프로젝트 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에서 구현해야하나 싶어 구현하..