안녕하세요 2년차 개발자입니다.
카페에서 커피마시면서
코딩하기를 좋아해요.

Software Engineer

Data Structure

자료 구조에 대해 설명한다.

자료 구조 특징

  1. 효율성
    • 자료 구조 사용 목정은 효율적으로 자료를 관리하고 사용하는 것이다.
    • 문제에 알맞은 자료 구조를 사용하면 업무 효율이 증가할 것이다.
  2. 추상화
    • 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다.
    • 어느 시점에 데이터를 삽입할 것인지, 어느 시점에 데이터를 추출하고 사용할 것인지에 초점을 둔다.
    • 데이터를 어떻게 삽입, 추출, 사용하는지를 알고리즘에 중점을 두지 않는다.
  3. 재사용성
    • 자료 구조를 설계할 때, 특정 프로그램에서만 동작하게 설계하지 않는다.
    • 다양한 프로그램에서 동작할 수 있도록 범용성 있게 설계하기 때문에 다른 프로젝트에서도 사용할 수 있다.

종류

  1. “선형”
    • 데이터가 일렬로 연결되어 있는 구조
  2. “비선형”
    • 자료의 구성이 일렬이 아닌 특정한 형태를 띄는 구조

단순 구조

  • 정수
  • 실수
  • 문자
  • 문자열

선형 구조

  • 배열(Array): 가장 일반적인 구조로서 인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료구조
  • 연결 리스트(Linked List): 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조
  • 스택(Stack): FILO
  • 큐(Queue): FIFO

비선형 구조

  • 트리(Tree): 부모 노드 밑에 여러 개의 자식 노드가 연결되고, 자식 노드가 다시 부모가 되어 각각의 자식 노드가 연결되는 재귀적 형태의 자료구조
  • 그래프(Graph): 정점(Vertex)과 정점들을 연결하는 변(Edge)으로 구성된 자료 구조