스택이란?
한쪽 끝에서만 데이터를 삽입/삭제 할 수 있는 선형 자료구조
LIFO(Last In First Out)의 특징을 가졌다.
스택 오퍼레이션
isEmpty() : 스택이 현재 비어있는지 체크
push(data) : 스택에 데이터 삽입
pop() : 스택에서 데이터 삭제
peek() : 스택의 맨 위(다음에 꺼낼 데이터) 확인
스택 구조
스택 구현
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 | import java.util.EmptyStackException; public class Stack { private static class Node { private int data; private Node next; private Node(int data) { this.data = data; } } private Node top; public boolean isEmpty() { return top == null; } public int peek() { if(isEmpty()) throw new EmptyStackException(); return top.data; } public void push(int data) { Node node = new Node(data); node.next = top; top = node; } public int pop() { if(isEmpty()) throw new EmptyStackException(); int data = top.data; top = top.next; return data; } } | cs |
큐란?
한쪽에서는 데이터 삽입만, 반대쪽에서는 데이터삭제만 가능한 선형 자료구조
FIFO(First In First Out)의 특징을 가졌다.
큐 오퍼레이션
isEmpty() : 큐가 현재 비어있는지 체크
enqueue() : 큐에 데이터 삽입
dequeue() : 큐에서 데이터 삭제
peek() : 큐의 맨 앞(다음에 꺼낼 데이터) 확인
큐 구조
큐 구현
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 | import java.util.EmptyStackException; public class Queue { private static class Node{ private int data; private Node next; private Node(int data) { this.data = data; } } private Node front; private Node rear; public boolean isEmpty() { return front == null; } public int peek() { return front.data; } public void enqueue(int data) { Node node = new Node(data); if(rear != null) { rear.next = node; } rear = node; if(front == null) { front = node; } } public int dequeue() { if(isEmpty()) throw new EmptyStackException(); int data = front.data; front = front.next; if(front == null) { rear = null; } return data; } } | cs |
'자료구조' 카테고리의 다른 글
해시테이블이란? Hash Table 구현 Java (0) | 2019.10.27 |
---|---|
링크드리스트(Linked List) 구현 Java (0) | 2019.10.26 |