자료구조 기초

자료구조 기초

자료구조란?

자료들의 어떤 특성에 따라서 효율적으로 처리하기 위해 구조화 시키는 방법이 자료구조이다.

자료구조를 배워야 하는 이유?

여우와 두루미라는 동화로 예를 들어보면 똑같은 음식을 먹더라도 두루미는 길쭉한 주둥이를 가진 특성 때문에 호리병에 음식을 담아주는 것이 먹기 편하고 여우는 넓은 그릇에 담아주는것이 먹기 편하다 마찬 가지로 자료구조또한 형태에 따라서 장단점이 존재하고 효율적인 프로그램을 짜기 위해서는 그에 맞는 자료구조를 선택해야 한다. 내가 이해한 바로는 프로그램을 개발할 때 자료구조에 대한 이해가 높아야지만 효율적으로 코드를 짤 수 있기 때문에 자료구조를 배워야한다고 느꼇다.

추상적 자료형

자료들과, 그 자료들에 대한 연산들을 개념적으로 정의만 한 것. 구현 방법을 명시하고 있지 않다는 점이 특징.

이렇게만 보면 잘 이해가 안되었는데 요리를 생각하면 이해하기가 쉬운 것 같다. 예를 들어 소고기(추상적 자료형)를 생각해보면 이 소고기를 먹을 수 있다는 개념은 있지만 이것을 구워서 스테이크로 먹을 지 아니면 국을 끓여 먹을지는 요리사가 구체적으로 정해야 되는 것처럼 마찬가지로 추상적 자료형을 바탕으로 어떻게 활용할지는 개발자에 달려있다.

대표적인 추상 자료형에는 복소수, 리스트, 스택, 큐, 집합 등이 있다.

추상적 자료형 : 개념적으로 정의만 한 것(소고기)

자료구조 : 자료를 저장하는 방법과 자료에 적용할 수 있는 연산을 구체적으로 제공한 것(스테이크를 만들지, 국을 끓일지)

배열과 연결리스트

리스트(추상적 자료형)

값들이 일렬로 저장되어 있으며 리스트 연산(조회,삽입,제거)을 제공

배열(구현방식)

배열에 저장되는 값들은 순서를 나타내는 번호를 가짐(인덱스)

자료를 조회할 때 단번에 찾을 수 있지만 추가할 때는 자료의 순서를 변경해주어야하기 때문에 번거로움

연결 리스트(구현방식)

배열은 인덱스를 붙여 저장하는 반면, 연결 리스트는 여러 개의 '노드'를 저장하는 방식

자료와 포인터를 가지는데 이 포인터는 어떤 자료의 다음이나 전에 올 자료를 지시해줌.

그렇기 때문에 특정 위치의 자료를 찾는 것이 번거로움 반면에 새로운 자료를 추가해줄 때에는 노드만 연결해주면 되기때문에 편하다라는 장점이 있다.

from http://comgiri.tistory.com/21 by ccl(A) rewrite - 2021-09-06 18:26:13