브래의 슬기로운 코딩 생활
자료구조 구현을 위한 C 프로그래밍 기법 - 구조체, 재귀호출 본문
구조체 : 개념
구조체 개념
구조체도 배열처럼 여러 개의 데이터를 그룹으로 묶어서 하나의 자료형으로 정의하고 사용
- 배열은 같은 자료형 만을 그룹으로 묶을 수 있지만, 구조체는 서로 다른 자료형을 그룹으로 묶을 수 있으므로 복잡한 자료 형태를 정의하는데 유용하게 사용됨
여러 자료형의 필드를 가지고 있는 레코드를 만들 때 구조체 사용함
필드,레코드, 파일의 개념
구조체 : 구조체 선언
구조체 선언
여러 자료형의 변수들을 그룹으로 묶어서 하나의 자료형으로 선언
구조체이름, 자료형, 데이터 항목으로 구성
구조체의 이름 - 구조체로 정의하는 새로운 자료형의 이름
항목 - 구조체를 구성하는 내부 변수들의 이름
− 구조체의 항목은 배열의 각 배열 요소에 해당
− 배열 요소는 모두 같은 자료형으로 되어있으므로 배열요소에 대한 선언 없이 사용이 가능하지만, 구조체에서는 각 항목이 다른 자료형을 가질 수 있기 때문에 항목별로 자료형과 항목이름(변수이름)을 선언해야 한다.
구조체 사용 단계
1. 구조체형 선언 : 내부 구조를 정의한다.
2. 구조체 변수 선언 : 구조체형에 따른 변수를 선언한다.
3. 구조체 변수의 사용 : 내부 항목에 데이터를 저장하고 사용한다.
구조체 : 구조체 변수의 초기화
구조체의 변수의 초기화
일반 변수 초기화와 마찬가지로 구조체 변수 초기화하려면 구조체 변수를 선언하면서 변수의 초기값 지정
일반 변수는 값을 하나만 가지므로 초기값도 하나지만, 구조체는 내부 항목이 여러 개일 수 있으므로 내부 항목의 자료형과 개수를 순서에 맞추어 초기값 리스트로 지정하고 중괄호({ }) 사용
구조체 : 데이터 항목의 참조
데이터 항목의 참조
구조체 연산자 사용 구조체 변수에 있는 각 데이터 항목 참조
점 연산자 : .
구조체 변수에 있는 데이터 항목을 개별적으로 지정할 때 사용
화살표 연산자 : ->
구조체 포인터 변수에서 포인터가 가리키는 구조체 변수의 데이터항목을 지정하기 위해서 화살표 연산자 사용
구조체 : 구조체 연산
데이터 항목 참조 연산
점 연산자와 화살표 연산자를 이용하여 구조체 데이터 항목 개별적으로 참조
재귀호출 : 재귀호출의 개념
재귀호출(순환호출)
- 자기 자신을 호출하여 순환 수행되는 것
- 함수 실행 특성에 따라 일반적인 호출방식보다 재귀호출방식을 사용하여 함수를 만들면 프로그램의 크기를 줄이고 간단하게 작성 가능
- 내가 나를 호출하는 것이므로 내 현재 작업을 처리하기 위해 같은 유형의 하위 작업이 필요
;하위 작업 : 현재 수행 중인 작업의 하위 단계, 즉 좀 더 작은 단위 작업
- 전제 문제를 한 번에 해결하기보다 같은 유형의 하위 작업으로 분할하여 작은 문제부터 해결하는 방법이 효율적인 경우 사용
베이스 케이스 base case
•재귀호출하는 과정을 반복하다 보면, 한 번에 해결할 수 있을 정도로 분할된 작업 단위가 충분히 작아지는 단계
재귀호출 : 재귀호출의 예 1
팩토리얼 함수
n에 대한 팩토리얼 함수는 1부터 n까지 모든 자연수를 곱하는 연산
문제) 알고리즘 (수열 문제)
문제) 5!(Factorial)총 곱을 구하세요
알고리즘은 어떤 문제를 해결하기 위한 처리 절차임
재귀호출 : 재귀호출의 예 1
재귀호출 : 재귀호출의 예 2
하노이 탑
- 복잡한 재귀 구조 문제 해결을 위한 방법
하노이 탑이란 1883년 프랑스 수학자 루카스(Lucas)에 의해 고안된 문제인데, 가운데기둥을 이용해서 왼쪽 기둥에 놓인 크기가 다른 원판을 오른쪽 기둥으로 옮기는 문제였다. 이때 원판은 한번에 한 개씩만 옮길 수 있으며, 작은 원판 위에 큰 원판이 놓일 수 없다는 조건이 따른다.
문제) 알고리즘 (수열 문제)
문제) 1!+3!+5!....+19!의 합을 구하세요
'Class > 자료구조, 알고리즘' 카테고리의 다른 글
순차 자료구조와 선형 리스트 (0) | 2023.03.14 |
---|---|
자료구조 구현을 위한 C 프로그래밍 기법 - 포인터 (0) | 2023.02.15 |
자료구조 구현을 위한 C 프로그래밍 기법 - 배열 (0) | 2023.02.14 |
알고리즘의 이해, 표현 방식, 성능 분석 (0) | 2023.02.12 |
자료의 표현(2), 자료의 추상화 (0) | 2023.02.09 |