본문 바로가기
CS/자료구조

[자료구조] 0. Basic Concepts

by 김파치 2020. 3. 28.

> 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