Vitamin Quiz 문제) 버블 정렬은 이미 정렬이 되어 있어도 모든 루프를 돌며 비교를 수행하는 미련한 알고리즘이다. 정렬되어 있는 경우에는 루프를 취소하고 빠져나올 수 있도록 알고리즘을 개선하라. 풀이 플래그(flag) 변수를 하나 사용함으로써 문제를 해결했다. 첫 검사에서 비교를 했는데 바꿀 것이 없었다면 플래그 값은 변함이 없을 것이다. 첫 검사로부터 데이터가 정렬이 되어 있는지를 플래그를 통해 확인한다. /************************************************* ** BubbleSort Vitamin Quiz *************************************************/ #include void BubbleSort(int dataS..
Vitamin Quiz 문제) 아래 예제 프로그램에서 특정 레벨의 모든 노드를 출력하는 함수 LCRS_PrintNodesAtLevel(LCRSNode *Root, int Level)를 작성하라. 함수의 원형은 다음과 같다. void LCRS_PrintNodesAtLevel(LCRSNode *Root, int Level); 풀이 // 이 글은 드래그 및 복붙이 안되므롤 아래 첨부한 파일을 다운받아 보시기 바랍니다. 첫 번째는 교재의 소스코드, 두 번째는 데브맷의 풀이 소스입니다. 이 문제의 핵심은 원하는 레벨의 모든 노드를 출력하기 위해서는 부모노드의 정보를 기억할 필요가 있다는 겁니다. /************************************************* ** LCRSTree Vit..
Vitamin Quiz 문제) 위 예제의 AS_IsFULL(ArrayStack *Stack) 함수를 추가하라. 스택을 생성할 때 정한 용량이 가득 차 있는지 체크하는 기능이다. 함수의 원형은 다음과 같다.int AS_IsFULL(ArrayStack *Stack); 풀이 // 이 글은 드래그 및 복붙이 안되므로 아래 첨부한 파일을 다운받아 보시기 바랍니다. 첫 번째는 교재의 소스코드 및 헤더파일, 두 번째는 데브맷의 풀이입니다. 문제가 굉장히 쉽다. 왜냐하면, 애초에 ArrayStack 구조체를 정의할 때, Capacity라는 변수도 추가해줬기 때문이다. 따라서 스택이 가득 차 있는지 확이하려면 현재 배열에 들어온 원소의 갯수를 나타내는 Top 변수와 Capacity가 같은지 여부만 체크해주면 된다. /*..
Vitamin Quiz 문제) 더블 링크드 리스트를 역순으로 출력하는 함수를 작성해라. 원형은 다음과 같다.void PrintReverse(Node *head); 풀이 // 이 글은 드래그 및 복붙이 안되므로, 최하단에 첨부한 문제풀이 소스코드를 따로 받아보시길 바랍니다./* 교재의 소스 코드 중, 문제풀이에 꼭 필요한 소스코드만 사용했습니다. 또한 데브맷이 임의적으로 변수의 이름과 함수의 이름을 재설정해줬습니다. 가독성과 의미를 고려한 결정이었습니다. 헤더파일 분할 없이 데브맷 풀이.c 에 코드를 담았으며 교재의 원본소스와 문제풀이 답안을 포함한 자체제작 소스 둘 다 최하단에 첨부해놨습니다. */ 맨 마지막에 정의되어 있는 printReverse 함수를 집중적으로 살펴보도록 하자. 나머지는 교재의 소스..
Vitamin Quiz 문제) SLL_insertAfter( ) 함수는 특정 '노드 뒤'에 새로운 노드를 삽입하는 기능을 수행한다. SLL_InsertNewHead( ) 함수는 '헤드 앞'에 새로운 헤드를 삽입할 수 있다. 그렇다면 특정 '노드 앞'에 새로운 노드를 삽입하는 SLL_InsertBefore( )함수도 존재할 것이다. 이 함수를 구현하라. 원형은 다음과 같다.void SLL_InsertBefore( Node **Head, Node *Current, Node *NewHead ); 다음으로 링크드 리스트의 모든 노드를 한 번에 제거하는 SLL_DestroyAllNodes( ) 함수를 작성하라. 원형은 다음과 같다.SLL_DestroyAllNodes( Nodes **List ); 풀이 // 이 글..
- Total
- Today
- Yesterday