자료구조를 제대로 공부하려면 다음 세가지 순서를 지켜서 공부 1. 자료구조의 ADT 정의 2. 정의한 ADT의 구현 3. 구현이 완료된 자료구조의 활용 ex) 연결 리스트. 간단 예제(ADT를 정의 X, 삽입, 삭제, 조회의 기능이 함수로 구분 X) #include #include typedef struct _node { int data; struct _node* next; } Node; int main(void) { Node* head = NULL; // NULL 포인터 초기화 Node* tail = NULL; Node* cur = NULL; Node* newNode = NULL; int readData; /**** 데이터를 입력 받는 과정 ****/ while (1) { printf("자연수 입력: ..
추상 자료형(Abstract Data Type) : 구체적인 기능의 완성과정을 언급하지 않고, 순수하게 기능이 무엇인지를 나열한 것 리스트 순차 리스트 : 배열을 기반으로 구현된 리스트 연결 리스트 : 메모리의 동적 할당을 기반으로 구현된 리스트 리스트 자료구조 1. 리스트 자료구조의 ADT를 정의한다. 2. ADT를 근거로 리스트 자료구조를 활용하는 main 함수를 정의한다. 3. ADT를 근거로 리스트를 구현한다. ex) 순차 리스트 ArrayList.h #ifndef __ARRAY_LIST_H__ #define __ARRAY_LIST_H__ #define TRUE1 #define FALSE0 /*** ArrayList의 정의 ****/ #define LIST_LEN100 typedef int LDa..
재귀함수 : 어떠한 함수가 있을 때 자기 자신을 호출하는 함수 ex1) 팩토리얼 #include int Factorial(int n) { if(n==0) return 1; else return n * Factorial(n-1); } int main(void) { printf("1! = %d \n", Factorial(1)); printf("2! = %d \n", Factorial(2)); printf("3! = %d \n", Factorial(3)); printf("4! = %d \n", Factorial(4)); printf("9! = %d \n", Factorial(9)); return 0; } ex2) 피보나치 수열 #include int Fibo(int n) { printf("func call p..
시간 복잡도(Time Complexity) : 어떤 알고리즘이 어떠한 상황에서 더 빠르고 더 느리냐 공간 복잡도(Space Complexity) : 어떤 알고리즘이 어떠한 상황에서 메모리를 적게 쓰고 또 많이 쓰냐 순차 탐색(Linear Search) T(n)=n #include int LSearch(int ar[], int len, int target) { int i; for (i = 0; i < len; i++) { if (ar[i] == target) return i; // 찾은 대상의 인덱스 값 반환 } return -1; // 찾지 못했음을 의미하는 값 반환 } int main(void) { int arr[] = { 3, 5, 2, 4, 9 }; int idx; idx = LSearch(arr,..
관계형 데이터 베이스 관계형 데이터베이스는 관계형 모델에 기반하여 데이터와 데이터들의 관계를 나타내기 위해 테이블들의 집합을 사용. 관계형 데이터베이스는 DML과 DDL을 포함. 대부분의 상업적인 관계형 데이터베이스 시스템은 SQL언어사용 테이블 각 테이블은 고유한 이름을 가진 여러개의 열로 구성. 관계형 모델은 레코드-기반 모델의 한 예이다. 레코드-기반 모델이라 명명한 것은 데이터베이스가 몇 개의 형으로 이루어진 고정 형식의 레코드로 구성되기 때문. 각 테이블은 특정한 형의 레코드들을 포함. 각 레코드형은 정해진 수의 필드(또는 속성)를 정의. 테이블의 각 열은 레코드형의 속성에 대응 데이터 조작 언어 SQL 질의 언어는 비절차적 언어이다. 입력으로 몇 개의 테이블(1개 가능)을 받아 항상 한 개의 ..
소개 데이터베이스 관리 시스템(DBMS)(Database Manage System) : 서로 관계있는 데이터들의 모임과 그 데이터에 접근하기 위한 프로그램의 집합으로 구성된다. 데이터베이스 : 보통 이 데이터들의 모임을 일컫는 말, 흔히 조직과 관련된 정보들을 포함 DBMS의 주요 목적 : 데이터베이스에 정보를 저장하고 이를 검색하기 위한 편리하고도 효율적인 환경을 제공 데이터베이스 시스테의 목적 파일 처리 시스템에 정보를 저장했을 때 많은 단점이 있다. => DBMS의 개발이 시급히 요청 데이터의 관점 DBMS : 서로 관련이 있는 파일의 모임과 사용자로 하여금 이 파일들을 액세스하거나 수정하도록 하는 프로그램의 집합 DBMS의 주요 목적 : 사용자에게 데이터에 관한 추상적인 관점을 제공하는 것 데이터..
파일의 분할 외부에 선언 및 정의되었다고 컴파일러에게 알려줘야 한다. extern int num; // int형 변수 num이 외부에 선언되어 있다. extern void Increment(void); // 함수는 extern 생략 가능 다른 파일에서 접근을 못하게 하고 싶다면 static 둘 이상의 파일을 컴파일하는 방법과 static에 대한 고찰 1. 이미 만들어진 파일을 프로젝트에 추가하는 방법 2. 프로젝트에 파일을 추가한 다음에 코드를 삽입하여 컴파일하는 방법 헤더 파일의 디자인과 활용 #include : 파일의 내용을 단순히 포함시키는 용도(그 이상도 이하도 아닌 포함) 헤더파일을 include 하는 두 가지 방법 1. #include 표준 헤더파일이 저장되어 있는 디렉터리에서 파일을 찾게된다..
선행처리기와 매크로 실행파일은 선행처리, 컴파일, 링크의 과정을 거쳐서 만들어진다. 선행처리가 하는 일은 삽입해 놓은 선행처리 명령문대로 소스코드의 일부를 수정하는 것이다. ex) #define PI 3.14 =>PI를 3.14로 수정 #include도 선행처리 명령문(stdio.h 파일의 냉요을 이곳에 가져다 놓으세요) 대표적인 선행처리 명령문 #define : Object-like macro #define PI 3.1415 지시자 매크로 매크로 몸체 이어서 등장하는 매크로(PI)를 마지막에 등장하는 매크로 몸체(3.1415)로 치환하라 PI와 같은 매크로를 오브젝트와 유사한 매크로, 또는 매크로 상수라고 한다. 매크로는 대문자로 #include #define NAME "홍길동" #define AGE ..