it 8

[C++ Fundamentals of Data Structures/C++ 자료구조론(이석호)] 5.5 스레드 이진 트리 연습문제

1. 스레드 이진 트리에서 노드 s의 왼쪽 자식으로 새로운 노드 l을 삽입하는 C++ 함수를 작성하라. s의 왼쪽 서브트리는 l의 왼쪽 서브트리가 된다. void ThreadTree :: Insertleft(ThreadedNode *s, ThreadedNode *r) { r->leftChild = s->leftChild; r->leftThread = s->leftThread; r->rightChild = s; r->rightThread = true; s->leftChild = r; s->leftThread = false; if(!r->leftThread) { ThreadedNode *temp = InorderSucc(r); temp->leftChild = r; } } 2. 스레드 이진 트리에 대한 C++..

[C++ Fundamentals of Data Structures/C++ 자료구조론(이석호)] 2.6 스트링 추상 데이타 타입 연습문제

1,2,3,4,5번 문제 전체 코드 //String.h의 헤더파일 #ifndef String #include using namespace std; class String { private: char* str; int len; int* f; public: String(char* init, int m) :len(m) { str = new char[m + 1]; f = new int[m]; for (int i = 0; i < m; i++) str[i] = init[i]; str[m] = '\0'; //문자열의 끝은 항상 널이다 FailureFunction(); } ~String() { if (str != NULL) { delete[]str; str = NULL; } if (f != NULL) { delete[..

[C++ Fundamentals of Data Structures/C++ 자료구조론(이석호)] 2.5 배열의 표현 연습문제

1. [프로그래밍 과제] 다차원 배열이 C++에서 표준 데이타 객체로 제공될지라도 때로는 다차원 배열을 위해 클래스를 정의할 필요가 있다. 이 정의는 다음과 같은 보다 견고한 클래스를 표현한다. (a) 범위 검사를 수행한다. (b) 각 차원의 인덱스 집합으로 0부터 시작하는 연속적인 정수들로 구성되는 것을 요구하지 않는다. (c) 배열 지정을 허용한다. (d) 배열의 초기화를 다른 배열을 사용하여 할 수 있다. (e) 실행 시에 배열의 각 차원의 범위를 선택한다. (f) 배열의 범위와 크기를 동적으로 변경할 수 있다. (g) 배열의 크기를 판단할 수 있는 방법을 제공한다. 실수 원소를 저장하고 위에 명기된 기능들을 제공하는 클래스 mdArray를 구현하라. 이를 위해 동적으로 생성되는 1차원 배열인 원소..

[C++ Fundamentals of Data Structures/C++ 자료구조론(이석호)] 2.4 희소 행렬 연습문제

1. 이 절에서 사용된 표현에서 임의의 원소 A[i][j]를 찾아 그 값을 변경하는 데 소요되는 시간은 얼마나 되는가? - 일반적인 방법 : O(cols*rows) - 빠른 전치 행렬 : O(cols+terms) 3. 희소 행렬을 읽고 출력하는 C++ 함수를 작성하라. 이것은 를 다중화해서 구현되어야 한다. 입출력 형식을 설계해야 하지만 내부 표현은 이 절에서 사용된 0이 아닌 원소들의 1차원 배열을 사용하여야 한다. 이 함수들의 연산 시간을 분석하라. *SparseMatrix 코드의 일부분 발췌 * 전체 코드는 첨부파일에 4. RowSize와 RowStart를 저장하기 위해 두 개의 배열을 사용하지 않고 단지 하나의 배열만을 사용하도록 FastTranspose 함수를 다시 작성하라. //변경 전 // ..

[C++ Fundamentals of Data Structures/C++ 자료구조론(이석호)] 2.3 다항식 추상 데이타 타입 연습문제

2. //출력 결과 * a,b배열을 랜덤으로 생성한 뒤, 오름차순 정렬하고 두 배열에 같은 값이 있는지 확인 후 길이 비교하여 -1, 0, 1 출력 되도록 클래스 생성 *참고 : https://jaimemin.tistory.com/138 3. 함수 Add를 수정해서 실행을 끝내기 전에 c.termArray의 크기를 c.terms로 줄일 수 있도록 하라. 이 수정으로 데이타 멤버 capactiy를 사용하지 않아도 되는가? * 추가된 부분이 c.termArray의 크기를 c.terms로 줄이는 부분. * 참고 : https://jaimemin.tistory.com/138 * 사실 이해 안 됏음 ㅜ.. 4. 이 절에서 표현한 방식의 다항식을 입력하고 출력하는 C++ 함수를 작성하라. 이 함수는 >> 연산자를 ..

[C++ Fundamentals of Data Structures/C++ 자료구조론(이석호)] 1.6 표준 템플릿 라이브러리 연습문제

1. 상이한 원소의 모든 순열을 출력할 수 있도록 프로그램 1.14를 수정해 보라. 순열을 생성하기 전에 원소 리스트를 오름파순으로 정렬하고 수행하라. 정렬을 하기 위해서는 [start, end)범위에 있는 원소를 오름차순으로 정렬하는 STL 알고리즘 [ sort(start, end) ]을 이용하라. 코드를 테스트해 보라. * 9번째 줄 코드가 정렬 코드 2. 상이한 원소의 모든 순열을 출력할 수 있도록 프로그램 1.14를 수정해보라. 먼저 처음 순열보다 사전식으로 큰 순열을 행성하기 위해 next_permutation을 이용해서 수행하고 다음에는 처음 순열보다 사전식으로 작은 순열을 생성하기 위해 STL 알고리즘 prev_permutation을 이용해서 수행하라. - next_permutation 이용..

[C++ Fundamentals of Data Structures/C++ 자료구조론(이석호)] 1.5 알고리즘 명세 연습문제 (01 ~ 05)

1. Horner의 법칙을 사용하여 다항식을 계산하는 C++ 프로그램을 작성하라. #include using namespace std; double horner(int size, int x, double* arr); //size의 크기를 갖는 다항식 arr에 x를 대입한 결과를 반환하는 horner함수 int main(void) { double arr[] = { 1, 2, 3, 4 }; //1+2x+3x^2+4x^3 다항식 생성 int size, x; //size: 다항식의 수, x:x0의 값 double res; //결과값을 저장하는 용도 x = 2; //다항식 f(x)에 2를 대입한 f(2)를 구하는 과정이다. size = sizeof(arr) / sizeof(double); // 다항식의 항의 갯수..