본문 바로가기
728x90
반응형

Computer Science/자료구조6

[비선형구조] 트리(Tree) 트리(Tree) 트리 자료구조란 마치 나무를 뒤집어 놓은 형태와 비슷하다고 해서 붙여진 이름이다. 트리는 그래프의 하위 집합인데, 트리가 되기 위해서는 조건이 필요하다. 트리의 조건 1. 컴포넌트가 하나인 연결 그래프이다. 2. 방향을 무시하였을 때, 싸이클이 존재하지 않는다. 위의 사진을 보면 오른쪽 그래프들은 모두 싸이클이 형성되어있다는 것을 알 수 있다. 즉, 트리가 아니다. 또한 트리가 1, 2 조건을 만족하게 되면 트리의 간선 개수는 트리의 모든 정점 개수보다 1이 작다. 라는 규칙도 발견할 수 있다. 트리의 구조 루트: 가장 상위의 노드. 서브트리: 작은 트리의 집합. 부모: 두 노드가 있을 때, 깊이가 작은 쪽의 노드. 자식: 두 노드가 있을 때, 깊이가 큰 쪽의 노드. 형제자매: 같은 부모.. 2023. 5. 19.
[비선형구조] 그래프(Graph) 그래프(Graph) 비선형구조에서 대표적인 그래프부터 알아보자. Graph는 크게 점과 점들을 이어주는 선으로 나뉘는데, 점을 정점, Node 혹은 Vertex 라고 부르고, 선을 간선, Edge 혹은 Link라고 부른다. 그리고 차수 Degree란, 정점과 이어진 간선의 개수를 말한다. 그래프는 크게 무방향 그래프와 방향 그래프로 나뉜다. 방향 그래프(Directed Graph)와 무방향 그래프(Undirected Graph) 방향 그래프는 간선의 방향이 존재하며, 무방향 그래프는 간선의 방향이 존재하지 않는다. 즉, 무방향 그래프는 어느 방향이든 이동할 수 있지만, 방향 그래프는 간선의 방향으로만 이동할 수 있다. 무방향 그래프 용어 인접하다: 간선 하나를 두고 정점 A에서 정점 B로 이동할 수 있는.. 2023. 5. 18.
[선형구조] 큐(Queue), 덱(Deque) 큐(Queue) 큐는 FIFO(First In, First Out) 선입선출의 형태를 가지는 자료구조이다. 스택처럼 끝부분에서 삽입, 삭제 연산이 이루어지지만 스택은 삽입, 삭제가 같은 쪽에서만 이루어지고 큐는 서로 다른 쪽에서 이루어진다는 차이를 가진다. 큐의 입구를 Rear, 출구를 Front라고 한다. 그리고 데이터를 삽입되는 연산을 Enqueue, 데이터를 삭제되는 연산을 Dequeue라고 한다. 큐는 BFS를 구현할 때, 아주 유용하게 쓰인다. 또한 큐 역시 스택과 마찬가지로 연결 리스트를 사용하여 구현하며, 삽입, 삭제 연산은 O(1)이다. 덱(Deque) 덱은 큐의 변형판으로, Double-Ended-Queue의 약자이다. 즉, 말뜻처럼 큐가 양쪽에서 가능하다는 것인데, 양쪽 끝에서 데이터의.. 2023. 5. 18.
[선형구조] 스택(Stack) 스택이란 LIFO(Last In, First Out) 선입후출 형태를 가지는 자료 구조이다. 스택에서 새로운 데이터를 삽입하는 것을 PUSH 연산 데이터를 삭제하는 것을 POP 연산이라고 한다. 그리고 맨 위의 값을 보는 것을 TOP 연산이라고 한다. 추가적으로 스택이 Empty 상태일 때, pop이나 top 연산을 하게 되면 Underflow, 즉 예기치 않은 연산으로 취급한다. 스택은 특정 쪽에서만 삽입, 삭제 연산이 이루어지므로 연결 리스트로 구현해야 한다. 그리고 push, pop, top 연산은 O(1)이 된다. 2023. 5. 18.
[선형구조] 리스트(List), 배열(Array), 연결 리스트(Linked List) 리스트는 선형적인(순서가 존재한다) 값을 가지고 있는 자료구조이다. 흔히 배열, 연결 리스트로 나눌 수 있는데, 배열(Array) 배열은 프로그래밍 언어에서 기본적으로 많이 쓰이는 자료구조이니, 설명은 생략하겠다. 연결 리스트(Linked List) 연결 리스트란 위의 그림처럼 각각의 Node가 존재하고, Node는 데이터와 다음 노드를 가리키는 포인터로 이루어져 있다. 그리고 첫 번째 Node를 HEAD라고 부르고, 마지막의 포인터가 가리키는 Node가 없다면 NULL 포인터가 되는 구조로 이루어져 있다. 연결 리스트의 삽입은 새로운 Node가 들어가고 포인터를 가리키는 식으로 이루어지고, 연결 리스트의 삭제는 기존의 Node가 빠지고, 포인터가 기존과 다른 Node를 가리키는 식으로 이루어진다. 그리.. 2023. 5. 18.
자료구조 개요 자료구조 자료구조, Data Structure란 데이터를 효율적으로 관리하기 위한 데이터의 집합의 형태(구조) 를 말한다. 즉, 데이터의 삽입(Insertion) 데이터의 삭제(Deletion) 데이터의 탐색(Search) 을 빠르고, 효율적으로 하기 위한 데이터의 구조이다. 자료구조의 종류와 구분 이제 자료구조를 하나 하나 알아가보도록 하자. 2023. 5. 18.
728x90
반응형