메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

독자리뷰

자료구조와 알고리즘 기초

hyuns***

|

2022-12-30

이것이 자료구조+알고리즘이다 with C 언어

복잡한 수식은 최소화하고 이해에 꼭 필요한 수식만 담고 작동 원리를 단번에 이해할 수 있게 도와주는 다양한 그림과 바로 실행하고 확인할 수 있는 108개 소스 코드를 예제로 제공해 알고리즘의 얼개를 완벽히 이해할 수 있도록 구성했다.

  • 저자 : 박상현
  • 출간 : 2022-08-03

책 구성은 크게 3단계로 이뤄진다.

1단계: 자료구조, 알고리즘 정의를 설명하고 C언어 기본문법을 복습한다.

2단계: 자료구조 -리스트, 스택, 큐, 트리

3단계: 알고리즘 -정렬, 탐색, 우선순위 큐와 힙, 해시 테이블, 그래프, 문자열 탐색

예전에 유튜브에서 봤는데 C로 자료구조를 공부하면서 자료구조마다 속도가 어떻게 달라지는지를 인지하는 게 좋다고 한다. 

자료구조를 이해하는데 C의 구조체와 포인터를 사용하면서 이해해보자.

그리고 그 단계가 지나면 알고리즘에 자료구조를 활용한다. 이때는 C++이나 자바를 사용한다.

자바의 경우 객체지향이 있다. 알고리즘을 개선해 효율성을 높이는 경험을 쌓는다. 

그 다음에 응용분야로 넘어가면 된다. 

챕터 2: 자료구조

1. 리스트

-append, insert, remove, getat(특정노드 반환)

 

-배열과의 차이 : 배열은 생성시점에 배열의 크기 지정 필수, 생성 후에는 크기 변경 불가

but 리스트는 유연하게 크기를 바꿀 수 있음

 

-링크드 리스트 : 노드를 연결해서 만든다. 

데이터 + 다음 노드에 대한 포인터로 이뤄짐

헤드(첫 번째 노드), 테일(마지막 노드)

 

-노드 생성에 자동메모리가 적합하지 않음(자동메모리상에 생성된 지역변수가 return문이 실행되면 제거가 되어 해당 변수의 메모리를 가리키는 포인터는 오류가 나게 됨)

-노드 생성에는 자유저장소 사용 : 메모리 할당 malloc() 함수 사용

 

-sizeof(Node) : 해당 Node리스트의 길이

-sizeof(*Node) : 포인터가 Node리스트의 0번째 주소를 가리키기 때문에 1이 나옴

 

-링크드 리스트의 단점 : 다음 노드를 가리키는 포인터로 추가 메모리가 필요, 특정 위치에 있는 노드 찾는 비용이 크다.

-링크드 리스트의 장점 : 레코드의 추가, 삽입, 삭제가 잦지만 조회가 드문 작업에서 유리함

예) DB에서 조회하던 레코드를 순차적으로 다룰 때

 

2. 스택

-입출력은 스택의 꼭대기에서만 이루어짐

-후입선출

-자동메모리도 스택임(지역 변수는 스택에 할당된다)

-대부분의 네트워크 프로토콜이 스택임

-이미지 편집 프로그램의 되돌리기도 스택

 

-구현방법 

1) 배열 : 용량을 동적으로 변경시 비용이 크지만 구현이 간단함

2) 링크드 리스트 : 스택 용량에 제한이 없음

 

 

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?