목록구현 (16)
MyCloud
자료구조 - 이진트리 이진트리는 각 노드가 최대 2개의 서브트리를 가지는 트리를 말합니다! 자바로 이진트리를 구현해보겠습니다. JAVA로 이진트리 구현 12345678910111213141516public class Node { private int data; private Node left; private Node right; public Node(int data) { this.setData(data); } public int getData() {return data;} public void setData(int data) {this.data = data;} public Node getLeft() {return left;} public void setLeft(Node left) {this.left = ..
자료구조 - 트리, 이진트리 트리는 부모-자식 관계의 노드들로 이루어지며 계층적인 구조를 나타내는 자료구조입니다. 운영체제의 파일시스템, HTML, XML 등을 다룰 때 사용하는 DOM, 데이터베이스 등 다양하게 활용되고 있습니다. 트리구조에서 중요한 것은 부모는 여러 자식을 가질 수 있지만 자식은 하나의 부모를 갖는다는 것입니다. 이진트리는 각 노드가 최대 2개의 자식을 가지는 트리를 말합니다. 위의 그림은 포화이진트리 구조입니다. 모든 노드가 2개의 자식을 갖기 때문입니다. 트리의 최상단 노드를 뿌리, 즉 루트(Root)라고 합니다. 루트로부터 어떤 노드까지의 거리를 그 노드의 깊이(Depth)라 하고 깊이가 같은 노드끼리의 집합을 레벨(Level)이라 합니다. 같은 부모를 가진 노드들을 형제(Sib..
자료구조 - 큐 큐는 먼저 들어온 데이터가 먼저 나가는 선입선출(LIFO) 구조입니다.큐에는 삽입(ENQUEUE) 연산과 삭제(DEQUEUE) 연산이 존재하는데삽입의 경우 가장 마지막 위치(Rear)에 쌓이게 되며삭제의 경우 가장 먼저 들어온 데이터, 즉 Front 에 위치한 데이터가 삭제 됩니다.예를 들면, 줄을 서서 물건을 받는 경우를 생각하시면 됩니다! JAVA로 Queue 구현 큐를 구현하는 방법은 2가지가 있습니다.배열을 이용한 큐와 연결리스트를 이용한 큐입니다.먼저 배열을 이용한 큐의 구현입니다. 12345678910111213public class CQueueArray { private int front; private int rear; private int maxSize; private O..
자료구조 - 스택 스택은 가장 최근에 들어온 데이터가 가장 먼저 나가는 후입선출(LIFO) 구조입니다.스택에는 삽입(PUSH) 연산과 삭제(POP) 연산이 존재하는데삽입의 경우 가장 높은 위치(TOP)에 쌓이게 되며삭제의 경우 가장 마지막에 들어온 데이터, 즉 TOP에 위치한 데이터가 삭제 됩니다. JAVA로 Stack 구현 스택을 구현하는 방법은 2가지가 있습니다.배열을 이용한 스택과 연결리스트를 이용한 스택입니다.먼저 배열을 이용한 스택 구현입니다. 123456789101112public class CStackArray { private int top; private int maxSize; private Object[] stackArray; // 최대 크기로 배열 생성 public CStackArra..
ArrayList에 이어서 LinkedList에 대해 알아보겠습니다. LinkedList에서 가장 중요한 것은 노드입니다.객체 Node는 data 필드와 next 포인터 변수를 가지고 있는 구조입니다.각 노드는 다음 노드를 가리키는 하나의 참조만을 갖기 때문에 접근이 한 방향으로만 가능합니다. 1234567public static void main(String[] args) { LinkedList numbers = new LinkedList(); numbers.add(10); numbers.add(20); numbers.add(30); numbers.add(40); System.out.println("add : " + numbers);cs LinkedList를 사용하기 위해서는 우선 LinkedList ..
변수에 담겨진 데이터는 하나의 데이터유형을 하나만 보관할 수 있습니다. 하지만 배열은 하나의 데이터유형을 여러개 보관할 수 있습니다. 각 요소들은 정수형 인덱스로 접근가능하며 다양하게 활용할 수 있습니다. 리스트는 순서를 가진 항목들의 모임입니다. 일반적으로 리스트는 배열리스트와 연결리스트로 표현되는데 배열리스트는 크기가 제한되므로 삽입, 삭제 시 범위를 넘어가는 문제가 생깁니다. 반면 연결리스트는 크기가 제한되지 않아 삽입, 삭제가 효율적입니다. + 추가 (ArrayList와 Vector의 차이)기능적 측면에서 보면 ArrayList와 Vector의 차이는 거의 없습니다.하지만 Java API 문서에 따르면, ArrayList에는 다음과 같이 정의되어 있습니다."This implementation is..