Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

브래의 슬기로운 코딩 생활

자료구조 구현을 위한 C 프로그래밍 기법 - 구조체, 재귀호출 본문

Class/자료구조, 알고리즘

자료구조 구현을 위한 C 프로그래밍 기법 - 구조체, 재귀호출

김브래 2023. 2. 16. 16:45

구조체 : 개념


구조체 개념

구조체배열처럼 여러 데이터그룹으로 묶어서 하나자료형으로 정의하고 사용

- 배열같은 자료형 그룹으로 묶을 수 있지만, 구조체서로 다른 자료형 그룹으로 묶을 수 있으므로 복잡한 자료 형태정의하는데 유용하게 사용

여러 자료형 필드를 가지고 있는 레코드를 만들 구조체 사용함
필드,레코드, 파일의 개념


구조체 : 구조체 선언


구조체 선언

여러 자료형 변수들을 그룹으로 묶어서 하나자료형으로 선언

 

구조체이름, 자료형, 데이터 항목으로 구성
구조체의 이름 - 구조체정의하는 새로운 자료형 이름
항목 - 구조체구성하는 내부 변수들의 이름
 
구조체항목배열 배열 요소해당
배열 요소모두 같은 자료형으로 되어있으므로 배열요소 대한 선언 없이 사용가능하지만, 구조체에서는 각 항목다른 자료형 가질 수 있기 때문에 항목별자료형 항목이름(변수이름) 선언해야 한다.
구조체 사용 단계

1. 구조체형 선언 : 내부 구조정의한다.

2. 구조체 변수 선언 : 구조체형에 따른 변수선언한다.

3. 구조체 변수 사용 : 내부 항목데이터저장하고 사용한다.

 


구조체 : 구조체 변수의 초기화


구조체 변수 초기화

일반 변수 초기화 마찬가지로 구조체 변수 초기화하려면 구조체 변수 선언하면서 변수 초기값 지정
일반 변수 하나 가지므로 초기값 하나지만, 구조체내부 항목 여러 개일 수 있으므로 내부 항목 자료형 개수순서 맞추어 초기값 리스트 지정하고 중괄호({ }) 사용


구조체 : 데이터 항목의 참조


데이터 항목 참조

구조체 연산자 사용 구조체 변수에 있는 데이터 항목 참조

 
점 연산자 : .
구조체 변수에 있는 데이터 항목개별적으로 지정할 때 사용

 

화살표 연산자 : ->

구조체 포인터 변수에서 포인터가 가리키는 구조체 변수데이터항목지정하기 위해서 화살표 연산자 사용


구조체 : 구조체 연산


데이터 항목 참조 연산

연산자화살표 연산자를 이용하여 구조체 데이터 항목 개별적으로 참조


재귀호출 : 재귀호출의 개념


재귀호출(순환호출)

- 자기 자신 호출하여 순환 수행되는
- 함수 실행 특성에 따라 일반적인 호출방식보다 재귀호출방식사용하여 함수를 만들면 프로그램크기줄이고 간단하게 작성 가능
- 내가 호출하는 것이므로 현재 작업처리하기 위해 같은 유형하위 작업이 필요
;하위 작업 : 현재 수행 중인 작업의 하위 단계, 좀 더 작은 단위 작업
- 전제 문제해결하기보다 같은 유형하위 작업으로 분할하여 작은 문제부터 해결하는 방법이 효율적인 경우 사용
 
베이스 케이스 base case
재귀호출하는 과정을 반복하다 보면, 한 번해결할 수 있을 정도분할작업 단위충분히 작아지단계


재귀호출 : 재귀호출의 예 1


팩토리얼 함수

n에 대한 팩토리 함수1부터 n까지 모든 자연수하는 연산


문제) 알고리즘 (수열 문제)


문제) 5!(Factorial)총 곱을 구하세요

알고리즘은 어떤 문제해결하기 위한 처리 절차


재귀호출 : 재귀호출의 예 1



재귀호출 : 재귀호출의 예 2


하노이 탑

- 복잡한 재귀 구조 문제 해결을 위한 방법

하노이 이란 1883프랑스 수학자 루카스(Lucas)에 의해 고안된 문제인데, 가운데기둥을 이용해서 왼쪽 기둥에 놓인 크기가 다른 원판오른쪽 기둥으로 옮기는 문제였다. 이때 원판은 한번에 한 개씩만 옮길 수 있으며, 작은 원판 위에 큰 원판이 놓일 수 없다 조건이 따른다.


문제) 알고리즘 (수열 문제)


문제) 1!+3!+5!....+19!의 합을 구하세요