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

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..

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

[1번] [listNode.h]/*단순 연결리스트를 위한 Node 클래스프로그램 6.5와 6.6에서 구현한 연결 리스트를 이용한 리스트 클래스를 화장하여다음의 연산들을 추가하고 동작을 확인하라(1) 연결 리스트의 모든 노드의 순서를 반대로 바꾸는 연산을 구혆하라(2) 다른 리스트 객체 that의 노드 정보를 현재 리스트에 병합하는 다음 연산을 구현하라 이 연산 후 that 리스트는 공백 리스트가 되어야 한다.*/#include using namespace std; class Node{private: Node *link; //다음 노드를 가리키는 포인터 변수 int data; //노드의 데이터 필드public: Node(int val = 0) :data(val), link(NULL) { } int getD..

C++로 쉽게 풀어쓴 자료구조 6장 연습문제

[Node.h]/*1.단순 연결 리스트에 정수가 저장되어 있다. 단순 연결 리스트의 모든 데이터 값을 더한 합을 출력하는 프로그램을 작성한다2. 단순 연결리스트에 특정한 데이터 값을 갖는 노드의 개수를 계산하는 함수를 작성한다*/#include using namespace std; class Node{private: Node *link; //다음 노드를 가리키는 포인터 변수 int data; //노드의 데이터 필드public: Node(int val = 0) :data(val), link(NULL) { } int getData() { return data; } Node *getLink() { return link; } void setLink(Node *next) { link = next; } void d..

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

[Location2D.h]/*미로 탐색을 위한 2차원 좌표 클래스*/struct Location2D{ int row; //현재 위치의 행 번호 int col; //현재 위치의 열 벊호 Location2D(int r = 0, int c = 0) { row = r; col = c; } //위치 p가 자신의 이웃인지 검사하는 함수 bool isNeighbor(Location2D &p) { return ((row == p.row && (col == p.col - 1 || col == p.col + 1)) || (col == p.col && (row == p.row - 1 || row == p.row + 1))); } //위치 p가 자신과 같은 위치인지를 검사하는 함수(연산자 오버로딩 사용) bool operat..

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

[문제 1, 2] CircularStudent.h/*가장 간단한 방법의 미팅 주선 프로그램을 만들려고 한다.남학생과 여학생의 큐를 각각 만들어 학생이 등록하면 큐에 넣는다.가장 먼저 등록한 남학생과 여학생을 뽑아 미팅을 주선하는 일을 반복한다.만약 여학생 큐가 비었거나 남학생 큐가 비었으면 한쪽 큐에 있는 학생들은 기다려야 한다. 조건(1) 등록한 학생 정보를 수동으로 입력하도록 사용자 인터페이스를 완성하라(2) 원형 큐를 사용하여 남학생 큐와 여학생 큐를 구현해보라*/#include #include #include using namespace std; #define MAX_QUEUE_SIZE 100 inline void error(char *str){ cout > gender; if (gender ==..

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

[SparsePoly.h]/*[심화문제] 희소 다항식을 위한 클래스 SparseMatrix를 구현하라 (1) 각 항을 나타내는 Term 클래스를 설계하고 구현해라(2) SparseMatrix 클래스를 설계하고 다음 멤버함수를 구현하라 i) void read(); //희소 다항식 입력 함수 ii) void add(SparsePoly a, SparsePoly b); //c.add(a, b)는 c=a+b iii)void display(char *str="SPoly = "); //희소다항식 출력 함수*/#include using namespace std; #define MAX_TERMS 20 struct Term //하나의 항을 표현하는 구조체{ int expn; //항의 지수 float coef; //항의 계..