본문 바로가기

Basic

트리 트리
Deque의 개념과 구현 1. Deque(Double-Ended Queue)이란? 한 쪽 끝으로만 추가/삭제할 수 있는 Queue와 달리, Deque는 양쪽 끝에 추가/삭제가 가능하 다. Deque는 인터페이스로서 자바에서 구현된 클래스는 ArrayDeque과 LinkedList 등이 있다. 덱은 스택으로 사용할 수도 있고, 큐로 사용할 수도 있다. 그래서 덱의 구현에 가장 대표적인 자료구조는 앞에서 보았던 양방향 연결리스트이다. 2. 자바의 Deque 주요 메소드 https://docs.oracle.com/javase/8/docs/api/index.html?java/util/Deque.html Method Descriptionboolean offerLast(E e) Deque의 front에 엘리먼트를 삽입한다.boolean o..
Queue의 다양한 구현 1. 원형 큐(링 버퍼) - 배열 기반 - front(머리), rear(꼬리)라는 변수를 인덱스로 활용해 삽입,조회,삭제를 구현하였다.- front와 rear의 변수가 같다면 큐가 비어있는것이다.- front와 rear+1 이 같다면 큐가 꽉차있는것이다.- 배열의 끝에 도달하면 첫번째 인덱스로 순환하여 원형큐라 한다.- 삭제의 경우 배열에서 실제로 하지 않고 front(머리-출구), rear(꼬리-입구)의 값을 조정한다. 12345678910111213141516171819202122package queue;public class ArrayQueueMain { public static void main(String[] args) {//배열 기반 큐 ArrayQueue queue = new ArrayQue..
Queue - 큐의 개념과 특성들 1. Queue의 정의 - Queue는 먼저 들어간 데이터가 먼저 나오는 자료구조이다.- 입구와 출구가 다르다.- 파이프 구조이다. 2. Queue의 기본연산 offer - 큐의 입구에 데이터 추가poll - 큐의 출구로부터 데이터의 반환과 + 삭제peek - 큐의 출구로부터 데이터의 반환isEmpty - 데이터의 유무 확인 Method Description boolean isEmpty() Queue가 비어있는지 알려준다. boolean offer(Object o) Queue에 객체를 저장. 성공하면 true, 실패하면 false를 반환. Object poll() Queue에서 객체를 꺼내서 반환+삭제. 비어있으면 null을 반환. Object peek() 삭제없이 요소를 읽어 온다. Queue가 비어있..
Stack의 다양한 구현 1. 순수 배열로 직접 구현 배열에서 인덱스를 활용해 topIndex의 값을 바꿔주는것이 포인트이다. POP을 호출해도 배열에서 값을 실제로 삭제하지는 않고 인덱스만을 활용한다. 1234567891011121314151617181920212223package Stack; public class ArrayStackMain { public static void main(String[] args) { ArrayStack st = new ArrayStack(); st.push("0");//삽입 st.push("1"); st.push("2"); System.out.println("= MyStack1 peek="); System.out.println(st.peek());//마지막 값 리턴 System.out.pri..
Stack 스택의 개념과 특성들 1. Stack의 정의 - Stack은 쌓아 올린다는 의미로서 마지막에 들어간 데이터가 먼저 나오는 자료구조 입구와 출구가 같다 2. Stack의 기본연산 push - 스택의 맨 위에 데이터 추가pop - 스택의 맨 위 데이터의 반환과 + 삭제peek - 스택의 맨 위 데이터의 반환empty - 데이터의 유무 확인 Method Description boolean isEmpty() Stack이 비어있는지 알려준다. Object peek() Stack의 맨 위에 저장된 객체를 반환. pop()과 달리 Stack에서 객체를 끼내지는 않음.(비었을 때는 EmptyStackException발생) Object pop() Stack의 맨 위에 저장된 객체를 삭제후 반환한다. (비었을 때는 Empty StackExce..
원형 연결리스트(CircularLinkedList)직접 구현 1. 원형 연결리스트(CircularLinkedList)란? 모든 노드가 원의 형태를 이루면서 연결되어 있는 리스트이다. 단방향 연결리스트처럼 머리와 꼬리를 가리키는 변수를 각각 두지 않아도, 하나의 변수만으로 머 리 또는 꼬리에 노드를 간단히 추가할 수 있다. 위 그림을 보면 head변수없이 tail 변수만으로 new node를 마지막 꼬리에 추가하였고, new node는 다시 맨 앞의 노드를 가리키면서 원의 형태로 연결되어있다. 원형 연결리스트의 노드의 삽입, 조회, 삭제를 구현해보겠다. 2. 원형 연결리스트의 구현 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565..
Doubly linked list(이중 연결 리스트) 직접 구현 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859package DoublyLinkedList; public class DoublyMain { public static void main(String[] args) { DoublyLinkedList numbers = new DoublyLinkedList(); numbers.addFirst(30);//맨 앞에 추가 numbers.addFirst(20); numbers.addFirst(10); System.out.println(numbers); System.out.println(numbers.removeLast());..