반응형 자료구조5 [Java][자료구조] Queue / 큐 - 배열과 리스트를 사용한 구현 큐 FIFO, First-in First-out 위 단어가 큐를 가장 잘 설명해준다. 가장 먼저 들어온 요소가 가장 먼저 나온다! 우리가 줄을 서는 모든 것이 큐이다. 가장 잘 이해가 될 것이다. 원소를 넣는 것이 add() , 삭제하는 것이 remove() 이다. 배열과 리스트를 사용해 구현할 것인데, 리스트는 매우 쉬우므로 일단 생략하겠다. 배열을 이용해 구현할 때, 일반적인 배열을 사용한다면 삽입과 삭제가 일어나면서 오른쪽으로 계속 치우치는 현상이 일어날 것이다. 이를 해결하기 위해, 배열을 환형으로 만든다! 이렇게 만들기 위해 %연산자를 사용하여 front와 rear을 따로 설정해줘야 한다. front,rear = (front,rear+1) % N 으로 만들어 준다. 만약 큐가 Empty가 되면 .. 2019. 6. 21. [Java][자료구조] Stack / 스택 - 배열, 리스트를 사용한 구현 스택 LIFO, Last-in, First-out 이 한마디로도 스택의 모든 것을 설명한다고 볼 수 있다. 삽입과 삭제가 한 방향에서만 이루어지는 자료구조로서 이해를 돕기 위해 현실의 예를 들어보자. 우리가 옷 정리를 안해서 옷 위에 옷을 계속 올리는 구조.. 그것이 바로 스택이다. 새로운 옷을 위에 올리는 것, 이것이 Push() 이고 맨 위의 옷을 가져가 다시 입는 것, 이것이 Pop() 이다. 물론 이것은 자바의 컬렉션에서 기가 막히게 제공을 하지만 처음에는 이해를 위해 직접 구현해보도록 하자. 구현을 하기 위해서 배열과 리스트를 사용할 수 있다. 바로 코드를 보도록 하겠다. 코드 1. 배열을 이용해 구현한 스택 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 .. 2019. 6. 20. [Java][자료구조] Tree (3) - 이진트리 순회 구현과 예시 저번 시간에 이진트리 구현과 순회에 대해 알아봤으니 바로 순회 코드를 보도록 하자! 순회 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 import java.util.LinkedList; import java.util.Queue; public class BT { private Node root; public BT(Node root) { this.root = root; } public Node getRoot() { return root; } //전위 순회 public void .. 2019. 5. 14. [Java][자료구조] Tree (2) - 이진 트리 구현과 전위,중위,후위,레벨 순회 Binary Tree 구현 이제 이진 트리를 구현하도록 하겠다. 필요한 클래스는 Node, Binary Tree 그리고 예시를 들어볼 Main 클래스이다. Node 클래스에는 본인의 key값이 있어야 하고, 그 노드의 자식들에 대한 정보가 필요하다. 또한 key값에는 다양한 것들이 들어올 수 있으므로 제네릭으로 key값을 사용하였다. 코드는 다음과 같다. Node 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 public class Node { private key key; private Node left, right; public Node(key key, Node left, No.. 2019. 5. 13. 이전 1 2 다음 반응형