동적으로 할당된 배열
·
Data Structure
C 포인터와 동적 메모리 할당 리뷰(1) (Pointers and Dynamic Memory Allocations) • 포인터 – C언어에서는 어떤 타입 T에 대해 T의 포인터 타입이 존재 – 포인터 타입의 실제값은 메모리 주소가 됨 – 포인터 타입에 사용되는 연산자 • & : 주소 연산자 • * : 역참조(dereferencing, 간접 지시) 연산자 Ex) i(정수 변수), pi(정수에 대한 포인터) int i, *pi pi = &i; i에 10을 저장하기 위해서는 다음과 같이 할 수 있다. i = 10; 또는 *pi = 10; – 널(null)포인터 : 어떤 객체나 함수도 가리키지 않는다. • 정수 0값으로 표현 • 널포인터에 대한 검사 int (pi == NULL) 또는 if(!pi) C 포인터와..
배열
·
Data Structure
#먼저 추상데이터 타입 ADT(Abstract Data Type)에 대해서 알아보자! 추상 데이터 타입(Abstract Data Type, ADT)이란 : 추상적으로 수학적으로 정의된 데이터 타입 : 어떠한 자료와 자료의 연산이 정의되어 있다. 연산은 추상 데이터 유형과 외부 간의 인터페이스 역할을 한다. 실제로 자료와 연산이 어떻게 구현되었는 지는 사용자가 알 필요가 없다. 예를 들어, 자연수를 추상 데이터 타입으로 정의하자면, 자료는 0부터 INT_MAX까지의 정수 연산은 zero(), is_zero(), add(x,y), sub(x,y), equal(x,y), successor(x) 등이 될 수 있다. 일상 생활에서 추상 데이터 타입과 비슷한 사례를 찾아보면 자판기가 있을 수 있다. 자판기 안에서 ..
자료구조란?
·
Data Structure
자료구조의 역할 - 왜 중요한가? Computer : 문제(계산)을 풀기 위한 H/W Algorithm : 문제를 푸는 방법 S/W Data Structure : 문제를 이루는 재료의 구성 알고리즘을 이용해서 문제를 풀 때 이 문제를 구성하는 어떠한 방식이 있는데 이때 이 방식을 자료구조라고 할 수 있다. 즉, 알고리즘은 자료구조에 굉장히 큰 영향을 받게 된다. 예를 들어, 문제를 스택을 쓰는 방식, 큐를 쓰는 방식 같이 자료구조가 달라진다면 알고리즘 또한 당연히 달라지게 된다. Computer는 문제를 풀기위한 장치라고 했는데, 세상을 문제의 세계로 바라본다면... 1. 답이 있는 문제 2. 답이 없는 문제 3. 답이 있는지 없는지 모르는 문제 세개로 구분할 수 있다. 이러한 문제를 자료구조와 알고리즘..