> Introduction
1. 자료구조(Data Structure)란?
- 데이터를 저장(store)하고 구성(organize)하는 하나의 방법
- 특정 데이터 조직의 논리적(logical) 또는 수학적(mathematical) 모델이다.
ex) 배열, 연결리스트, 스택, 큐, 해시, 트리, 그래프 ···
2. 알고리즘(Algorithm)이란?
- 문제를 해결하기 위한 방법(method) 또는 과정(process)이다.
- 어떤 일을 수행하기 위한 명령어의 유한한 집합(finite set of instructions)이다.
따라서 Program (Software) = Data Structures + Algorithms
> System Life Cycle
1. 요구사항 (Requirement)
- 프로젝트의 목적을 정의하는 집합
- input과 output을 나타내야 함
2. 분석 (Analysis)
- 문제를 다루기 쉬운 piece로 자른다
- 방법: top-down, bottom-up
3. 설계 (Design)
- 추상적인 데이터 타입 (Data Structure)
- 알고리즘 (Algorithm)
- 언어에 따라 다르다 (OOP 등)
4. 정제 및 코딩 (Refinement and Coding)
- 데이터 객체를 나타냄
- 각 연산에 대해서 알고리즘을 작성
5. 검증 (Verification)
- 테스팅
- 에러 제거
> 동적 메모리 할당 (Dynamic Memory Allocation)
프로그래밍을 할 때 우리가 메모리 공간을 얼마나 필요로 할 지 모른다면, run-time에 그 공간을 할당할 수 있다.
이를 위해 C 언어는 Heap이라는 메커니즘을 제공하고, malloc()이 run-time에 메모리 공간을 할당한다.
만약 메모리 공간이 충분하지 않다면 malloc()이 에러가 날 수 있기 때문에, NULL을 return하는지 확인해야 한다.
'CS > 자료구조' 카테고리의 다른 글
[자료구조] 3. 스택 (Stack) (0) | 2020.03.28 |
---|---|
[자료구조] 2. Iterative, Recursive (0) | 2020.03.28 |
[자료구조] 1. Selection Sort, Binary Search (0) | 2020.03.28 |