DATA STRUCTURE - 1. Outline

Jerry Kim·2021년 7월 29일
0

CS_STUDY

목록 보기
1/5
post-thumbnail

1. 자료구조(Data Structure)란?

  • 프로그램내 데이터를 메모리상에서 관리하는 여러가지 구현방법들
  • 자료구조에 따라 로직(알고리즘)의 설계, 구현방식이 달라지므로 프로그램의 수행속도와 밀접한 관련이 있음
  • 구현하려는 프로그램에 맞는 최적의 자료구조를 활용하기 위해서는 자료구조에 대한 이해가 필수
    *JAVA ,C++에는 자료구조를 구현할 다양한 라이브러리가 존재


2. 자료구조의 종류

1) 선형구조 :

  • 배열(Array) :
    • 정해진 크기의 메모리를 먼저 할당받아 사용
    • 메모리에 연속적으로 연결되어, 자료의 물리적 위치와 논리적 위치가 동일
      -> 자료 검색에 용이(with Index)
      • 자료검색 : O(1)
      • 자료 추가/삭제 : O(N)

  • 연결리스트(Linked-List) :
    • 자료가 추가될 때마다 메모리를 할당
    • 자료는 next/prev 요소를 가르키는 링크로 연결
    • 실제 메모리에는 연속적으로 연결 X 논리적으로 연속O
      -> 자료 추가와 삭제에 용이
      • 자료검색 : O(N)
      • 자료 추가/삭제 : O(1)
  • 스택(Stack) :
    • LIFO(Last In, First Out), 나중에 들어간 놈이 먼저 나온다
    • top에 해당하는 자료가 push(추가)/pop(삭제)
  • 큐(Queue) :
    • FIFO(First In, First Out), 먼저 들어간 놈이 먼저 나온다
    • rear(맨뒤)를 이용해 enqueue(추가)/ front(맨앞)를 이용해 dequeue(삭제)

*스택/큐는 배열 OR 링크드리스트로 구현하여 사용



  • 데크(Deque, Double Ended QUEue) :
    • 스택과 큐의 특징을 모두 갖고 있는 복합자료형
    • 리스트의 양쪽 끝에서 노드의 삽입과 삭제가 모두 가능한 선형리스트
    • 입력이 한쪽만 가능한 입력제한 데크 : Scroll / 출력이 한쪽에서만 가능한 출력제한 데크 : Shelf

  • 우선순위 큐(Priority Queue) :
    • 어떠한 특정 조건에 따라 우선순위가 가장 높은 요소가 추출되는 자료형
    • EX) 최댓값 추출하는 우선순위 큐 : [1,4,5,3,2] -> 5-4-3-2-1 순으로 데이터가 추출됨
    • Heap 자료구조와 연관이 깊음(힙 정렬을 이용해 리스트를 정렬하기 때문)




2) 비선형구조 :

  • 트리(Tree) : 부모 노드와 자식 노드간의 연결로 이루어진 자료 구조
    - 트리는 특수한 형태의 그래프의 일종 (트리 ⊂ 그래프)
    즉, 그래프는 단방향, 양방향 모두 가리킬 수 있지만, 트리는 단방향만 가능 즉, 부모노드에서 자식노드만을 가리킬 뿐
    ∴ 트리는 순환구조 (cyclic)를 가지지않음 + 하나의 부모노드, 하나의 Root를 가짐 *가장 널리 사용되는 트리 자료구조 : 이진트리 - 힙(Heap), 이진탐색트리(Binary Search Tree)

  • 그래프(Graph) : 정점(Vertex)과 간선(Edge)의 유한집합, G = (V,E)
    - 정점(Vertex) : 어떤 특성을 갖는 객체(Node)
    - 간선(Edge) : 정점간의 연결관계 (=링크,Link)
    *방향성(1->2)이 있는 경우/없는 경우가 존재

    • 그래프 구현방법 : 인접행렬(Adjacency Matrix), 인접리스트(Adjacency List)
    • 그래프 탐색방법 : BFS(Breadth First Search), DFS(Depth First Search)
profile
Welcome to Jerry's World

0개의 댓글