C, C++/C3 [자료구조] 추상자료형 Abstract Data Type 추상자료형은 구체적인 기능의 구현 과정을 언급하지 않고, 순수히 기능이 무엇인지를 나열한 것이다. 예를 들어 주머니에 대한 '추상 자료형'을 추출해보면 구슬을 넣음 구슬을 빼냄 동전을 넣음 동전을 빼냄 돌을 넣음 돌을 빼냄 이라고 할 수 있다. 위에는 주머니에 구슬을 넣기 위해 주머니를 열어서 구슬을 넣고 주머니를 닫는 과정, 즉 구슬을 주머니에 넣기 위해 어떠한 과정을 거치는지는 언급되지 않고 있다. 그렇다면 위에서 언급한 주머니를 구조체를 이용해 정의해보겠다. typedef struct pocket { int marble; //구슬의 수 int coin;//동전의 수 int rock;//돌의 수 } Pocket; 이렇게 구조체의 정의만으로 Pocket이라는 자료형의 정의가 완성되는 것은 아니다. Po.. 2022. 1. 22. [자료구조] 이진 탐색 알고리즘의 재귀적 구현 ◆이진 탐색 알고리즘의 반복 패턴을 정리해보면 1, 탐색 범위의 중앙에 목표 값이 저장되었는지 확인 2. 저장되지 않았다면 탐색 범위를 밤으로 줄여서 다시 탐색 시작 ◆이진 탐색 알고리즘의 탐색 실패가 결정되는 시점 :탐색 범위의 시작위치를 의미하는 first가 탐색 범위의 끝을 의미하는 last보다 커지는 경우 →재귀 함수의 탈출 조건이 된다!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #include int BSearchRecur(int ar[], int first, int last, int target) { int mid; if(first > last) return -1; // -1의 반환은 탐색의 실패. mid = (first + last) / 2; // 탐색 대상의 중앙을 찾.. 2022. 1. 22. [자료구조] 함수의 재귀적 호출 재귀함수 : 함수 내에서 자기 자신을 다시 호출하는 함수 void Recursive(void){ printf("Recursive call! \n"); Recursive(): } 나도 처음에는 "어떻게 완료되지 않은 함수를 다시 호출하지?" 라고 생각했는데 함수가 호출되면 해당 함수의 복사본을 만들어서 실행하는 구조이기 때문에 Recursive 함수를 실행하는 중간에 다시 Recursive 함수가 호출되면, Recursive 함수의 복사본을 하나 더 만들어서 복사본을 실행한다 라고 생각하면 된다. 하지만 위의 예제는 Recursive함수에 '재귀의 탈출조건'이 없기 때문에 한번 호출되면 계속 호출되는 문제가 있다. 따라서 탈출의 조건을 추가해보자 #inckude void Recursive(int.. 2022. 1. 22. 이전 1 다음