C언어로 쉽게 풀어쓴 자료구조6 [자료구조] 08. 포인터 ※ 사전 지식 변수 : 이름(name) / 값(value) / 주소 값(address)을 가짐. 포인터(Pointer) ▶ 다른 변수의 주소를 가지고 있는 변수. int a = 10; int *p; p = &a; //포인터 변수의 초기화 ▷ p : 포인터 변수. p의 값은 주소값. 해당 주소에 실제 위치한 값이 int. (p의 값으로 a의 주소 값 할당) ▶ 포인터가 가리키는 값의 변경 : * 연산자 사용. (역참조) ▷ 역참조 : p값인 주소값이 실제로 갖는 값을 가져옴. ▷ 변수 a의 값을 직접 변경하지 않아도 포인터 변수 p의 역참조를 통해 a의 값을 변경할 수 있음. int a = 100; int *p = &a; // a의 주소값을 이용해 포인터 변수 p의 값을 초기화 *p = 200; // 변수.. 2021. 10. 27. [자료구조] 07. 배열과 구조체 배열 (Array) ▶ 같은 자료형의 변수를 여러 개 만드는 경우에 사용한다. (타입이 같은 데이터들을 하나로 묶는 방법.) ▷ 예시 : int list 1, list 2, list3, list4, list5, list6; → int list [6]; ▶ 1차원 배열(One-Dimensional Array; Vector) int value, list[6]; // 정수형 배열과 변수 선언 list[0] = 100; // 배열 첫번째 원소에 값을 할당.(100 할당) value = list[0]; // 배열 첫번째 원소의 값을 가져와 value 수에 할당. (value = 100) ▶ 2차원 배열(Two-Dimensional Array; Matrix) int list[3][5]; //정수형 2차원 배열 선언.. 2021. 10. 26. [자료구조] 06. 재귀 (Recursion) 재귀란? ▶ 알고리즘이나 함수가 실행 중에 자기 자신을 다시 호출하여 (함수 정의에서 자기 자신 호출 포함) 문제를 해결하는 기법이다. 정의 자체가 순환적으로 되어 있는 경우에 적합하다. ▶예시 : 팩토리얼 구현 int factorial(int n) { if(n ALGORITHYM factorial(n) // 알고리즘 이름 //Input : n (Integer; n >= 0) //Output : n! if n ▷모든 재귀 알고리즘은 2 part로 나뉜다. 1) Base Case (= Escape Condition) : 탈출 조건 → 탈출 조건이 없다면 시스템 오류가 발생할 때까지 무한 호출하게 된다. 2) General Case : 일반적 정의 재귀(Recursion) vs 반복(Iteration) ▶ .. 2021. 10. 23. [자료구조] 04. 빅오메가 표기법 & 빅세타 표기법 빅오메가 표기법 (Big Omega) ※ 수학적 정의 : 모든 n ≥ n0에 대하여 |f(n)| ≥ C|g(n)|을 만족하는 2개의 상수 C와 n0가 존재하면 f(n) = Ω(g(n))이다. ▶ 함수의 하한 (lower bound)을 표시한다. ▶ 예를 들어, f(n) = 2n +1일 때, n ≥ 5이면 2n + 1 < 10n이므로 f(n) = Ω(n)이다. ▶ 빅오 표기법이 Worst Case에 대한 표기법이라면, 빅오메가 표기법은 Best Case에 대한 표기법이다. 빅세타 표기법 (Big Theta) ※ 수학적 정의 : 모든 n ≥ n0에 대하여 C1|g(n)| ≤ |f(n)| ≤ C2|g(n)|을 만족하는 3개의 상수 C1, C2와 n0가 존재하면 f(n) = Θ(g(n))이다. ▶ 함수의 상한인.. 2021. 10. 21. [자료구조] 02. 추상 데이터 타입 사전 지식) 자료형 - 데이터의 종류(데이터와 연산의 집합) "추상 데이터 타입(ADT : Abstract Data Type)" ▶ 데이터 타입을 추상적(개념으로만 존재하고 실재하지 않는)으로 정의한 것이다. (= 개념으로만 존재하고 실재하지 않는다.) ▷ 데이터의 추상화 : 사용자에게 중요한 기능과 동작만 강조되고, 중요하지 않은 구현 세부 사항은 제거하는 것을 말한다. ▶ 데이터나 연산이 무엇인가는 정의(속성, 특징을 정의) 되지만 데이터나 연산을 컴퓨터 상에서 어떻게(방법을 정의하지 않는다.) 구현할 것인지 세부적 사항은 정의하지 않는다. 추상 데이터 타입의 정의 * 객체 : 추상 데이터 타입에 속하는 속성 또는 특징을 정의한다. * 연산 : 객체들 사이의 연산을 정의하고, 추상 데이터 타입과 외부.. 2021. 10. 20. [자료구조] 01. 자료 구조와 알고리즘 * 자료구조 : 데이터의 표현 및 저장 방법 * 알고리즘 : 문제의 해결 방법, 문제를 풀기 위한 단계적 절차. 자료구조에 의존적임. 1. 입력 : 0개 이상의 입력이 존재해야 한다. 2. 출력 : 1개 이상의 출력 즉, 반환 값이 존재해야 한다. 3. 명백성 : 각 명령어의 의미는(입출력은) 명확해야 한다. 4. 유한성 : 반드시 종료 되어야 한다. (무한 루프에 빠져서는 안 된다.) 5. 유효성 : 컴퓨터로 실행 가능한 연산이어야 한다. 1. 자연어 (Natural Language / 말, 글로 기술) -장점 : 사람이 읽기 쉽다. -단점 : 간결하지 않고, 코드로 변환하기 어렵다.(모호성 존재).. 2021. 10. 12. 이전 1 다음