자료 구조 정리

스택

  • 접시를 쌓듯이 자료를 차곡차곡 쌓아 올린 형태의 자료 구조
  • 스택에 저장된 원소는 top으로 정한 곳에서만 접근 가능
  • top의 위치에서 원소를 삽입하여 먼저 삽입한 원소는 밑에 쌓이고, 나중에 삽입한 원소는 위에 쌓이는 구조
  • 마지막에 삽입(Last-In)한 원소는 맨 위에 쌓여 있다가 가장 먼저 삭제(First-Out)됨

⇒ 후입선출 구조 (LIFO, Last-In-First-Out)

큐(Queue)

  • 삽입과 삭제의 위치가 제한되어있는 유한 순서 리스트
  • 큐의 뒤에서는 삽입만 하고, 앞에서는 삭제만 할 수 있는 구조
  • 삽입한 순서대로 원소가 나열되어 가장 먼저 삽입(First-In)한 원소는 맨 앞에 있다가 가장 먼저 삭제(First-Out)됨 ⇒ 선입선출 구조 (FIFO, First-In-First-Out)
  • 원형 큐(Circular Queue)는 1차원 배열의 처음과 끝을 논리적으로 연결하여 만든 큐로써, 선형 큐의 잘못된 포화상태 문제를 해결함
  • 원형 큐에서는 초기 공백 상태일 때 front와 rear 값을 ‘0’으로 하고, 공백상태와 포화상태를 쉽게 구분하기 위해 자리 하나를 항상 비워 둠
  • 원형 큐에서는 배열의 인덱스가 n-1 다음에 다시 0이 되어야 하므로 사용할 인덱스를 조정하기 위해서 나머지 연산자인 ‘mod’를 사용

Hash

  • 데이터 관리/유지 자료구조
  • 리소스 < 속도 (빠른 데이터 접근)

해싱

데이터 ⇒ 해시함수 ⇒ 해시 테이블

데이터가 해싱함수에 의해 분류가 되고 해시 테이블에 규칙에 의해 들어감

해시함수

같은 데이터가 올때마다 똑같이 분류되야하는 규칙성이 정의된 함수

해시테이블

  • 인덱스, 키: 1 Column
  • 해시값, 벨류: 2 Column
  • 버켓: 인덱싱 된 기준
  • 엔트리: 안에 들어가 있는 값

출돌 대처

Chaining

해당 인덱스에 이미 값이 있다면 그 뒤에 체인으로 연결 시킴

선형 탐사 (linear probing)

'이미 만들어 놓은 버켓을 소모하자' 라는 취지의 기법, 데이터를 다음 버켓자리에 넣음

테이블의 할당된 공간을 다 사용해서 더 이상 엘리먼트가 들어갈 수 없을 때 '테이블 리사이징'을 하여 테이블을 늘림

Was it useful?