Skip to content

scratchstudio/data-structure-tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 

Repository files navigation

자료구조(Data Structure)

자바로 배우는 쉬운 자료구조. 이지영 저. 한빛아카데미. 2013. 의 예제를 참고함.


Stack

시간 순서에 따라 가장 마지막에 삽입한 자료가 가장 먼저 삭제되는 후입선출 (LIFO, Last In First Out) 방식으로 동작.

연산자 연산수행위치
삽입연산 push top
삭제연산 pop top

Queue

리스트 한쪽 끝(rear)에서 삽입이 이루어지고, 반대쪽 끝(front)에서 삭제 작업이 이루어져 삽입된 순서대로 삭제되는 선입선출 (FIFO, First In First Out) 방식으로 동작.

연산자 연산수행위치
삽입연산 enQueue rear
삭제연산 deQueue front

Deque (Double-ended Queue)

큐의 양쪽 끝에서 삽입, 삭제가 모두 발생할 수 있는 큐로서 스택의 성질과 큐의 성질을 모두 가짐.

연산자 연산수행위치
삽입연산 insert front 또는 rear
삭제연산 delete front 또는 rear

Tree

비선형 자료구조 중 자료들 간에 계층관계를 가진 계층형 자료 구조. 연산을 단순화 하기 위해 트리의 노드 구조를 일정하게 정의한 것이 이진트리. 모든 노드의 차수를 2 이하로 정하여 트리의 차수가 2 이하가 되도록 만듬.

이진 트리 (Binary Tree)

n 개의 노드를 가진 이진 트리는 항상 n-1 개의 간선을 가짐. 높이가 h 인 이진 트리가 가질 수 있는 노드의 최소 개수는 h+1 개.

힙 (Heap)

완전 이진 트리에 있는 노드 중 키 값이 가장 큰 노드나 키 값이 가장 작은 노트를 찾기 위해 만든 자료 구조.

Graph

모든 연결 구조를 표현할 수 있는 자료구조. 연결할 객체를 나타내는 정점(Vertex)와 간선(Edge)의 집합으로 구성. G=(V, E)


### 그래프의 종류

- 무방향 그래프 (Undirected Graph)

두 정점을 연결하는 간선에 방향이 없는 그래프. (Vi, Vj)(Vj, Vi) 는 같은 간선을 나타냄.

- 방향 그래프 (Directed Graph)

다이그래프(Digraph)라고도 하며, 간선에 방향이 있는 그래프. Vi -> Vj를 <Vi, Vj> 로 표현하고 화살표로 나타냄. Vi를 tail, Vj를 head라고 함. <Vi, Vj><Vj, Vi> 는 서로 다른 간선.

- 완전 그래프 (Complete Graph)

한 정점에서 다른 모든 정점과 연결되어 최대 간선 수를 가진 그래프. 정점이 n개인 무방향 그래프의 최대 간선 수는 n(n-1)/2개 이며, 방향 그래프의 경우는 n(n-1)개.

- 부분 그래프 (Sub Graph)

원래 그래프에서 일부의 정점이나 간선을 제외하여 만든 그래프.

- 가중 그래프 (Weight Graph or Network)

정점을 연결하는 간선에 가중치를 할당한 그래프.


### 그래프 순회 - [`com.datastructure.graph.search`] (https://github.com/iamkyu/data-structure-tutorial/tree/master/src/com/datastructure/graph/search)

- 깊이 우선 탐색 (Depth First Search)

시작 정점에서 한 방향으로 가장 먼 경로까지 깊이 탐색했다가 더 이상 갈 곳이 없으면 가장 마지막에 만난 갈림길로 되돌아와서 다른 방향의 간선으로 탐색을 계속함. 후입 선출 구조의 스택을 이용.

(1) 시작 정점 v 방문
(2) 정점 v에 인접한 정점 중

  • a. 방문하지 않은 정점 w가 있으면 정점 v를 스택에 push하고 w를 방문.
  • b. 방문하지 않은 정점이 없으면 스택을 pop하여 가장 마지막 정점을 v로 설정.

(3) 스택이 공백이 될 때까지 (2)를 반복.

- 너비 우선 탐색 (Breath First Search)

시작 정점으로부터 인접한 정점들을 모두 차례로 방문 후, 방문했던 정점을 다시 시작점으로 하여 인접한 정점들을 차례로 방문. 선입선출의 구조의 큐를 이용.

(1) 시작 정점 v 방문
(2) 정점 v에 인접한 정점 중

  • a. 방문하지 않은 정점이 있으면 차례로 방문하면서 큐에 enQueue.
  • b. 방문하지 않은 정점이 없으면 큐를 deQueue하여 구한 정점을 v로 설정하고 다시 (2)를 반복.

(3) 큐가 공백이 될 때까지 (2)를 반복.

About

자바를 통한 자료구조 학습

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages