스택이란?

한쪽 끝에서만 데이터를 삽입/삭제 할 수 있는 선형 자료구조

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

+ Recent posts