스텍(stack)은 데이터를 일시적으로 쌓아 놓느 ㄴ자료구조로, 데이터의 입력과 출력 순서는 후입선출(LIFO : Last In Frist Out)이다. 즉 가장 나중에 넣은 데이터를 가장 먼저 꺼낸다
푸시(Push) : 스텍에 데이터를 넣는 작업
팝(Pop) : 스텍에서 데이터를 꺼내는 작업
꼭대기(Top) : 푸시와 팝이 이루어 지는 쪽
바닥(Bottom) : 스택의 가장 아랫 부분
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
for (int i = 1; i <= 5; i++) {
stack.push(i);
System.out.println(stack.peek());
} //1, 2, 3, 4, 5 출력
stack.pop();
System.out.println("Pop()");
System.out.println(stack.peek()); //4출력
System.out.println(stack.search(3)); //2출력
System.out.println(stack.empty()); //false출력
}
}
스택 선언
Stack<?> stack
= new Stack<>();
stack.push()
-> 스텍에 데이터를 넣는 작업
stack.pop()
-> 스텍에서 데이터를 꺼내는 작업
stack.peek()
-> 으로 가장 최근에 들어간 값을 출력
stack.search(3)
은 3의 인덱스를 출력해준다. 맨 밑부터 인덱스가 0,1,2,3 이므로 '3'은 현재 인덱스 2에 위치해 있다
stack.empty()
-> 현재 스택이 비었으면 True, 값이 들어가 있으면 False를 출력해준다.
큐는 스택과 마찬가지로 데이터를 일시적으로 쌓아 놓는 자료구조입니다.
하지만 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(FIFO : First In First Out)인 점이 스택과 다르다.
EX) 은행 창구 차례, 마트 계산 대기열, 로아 대기열
인큐(en-qurue) : 큐에 데이터를 넣는 작업
디큐(de-queue) : 데이터를 꺼내는 작업
프런트(front,맨 앞) : 데이터가 나오는 쪽
리어(rear, 맨 뒤) : 데이터를 넣는 쪽
resize() : 크기를 늘려주는 메소드입니다.
import java.util.LinkedList;
import java.util.Queue;
public class Queue {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<String>();
// 값 추가
que.add("Hello");
que.add("World");
que.add("Hello");
que.add("Hello");
que.add("World");
System.out.println(que); // 결과 출력 -> [Hello, World, Hello, Hello, World]
que.poll(); // 맨 앞의 값 삭제
System.out.println(que); // 결과 출력 -> [World, Hello, Hello, World]
que.remove(); // 맨 앞의 값 삭제
System.out.println(que); // 결과 출력 -> [Hello, Hello, World]
que.remove("Hello"); // 해당하는 값 삭제
System.out.println(que); // 결과 출력 -> [Hello, World]
que.clear(); // Index의 값 삭제
System.out.println(que); // 결과 출력 -> []
}
}
큐 선언
Queue queue = new LinkedList();
poll()
: 맨 앞의 값 삭제
remove()
: 맨 앞의 값 삭제
remove("String")
: 해당하는 값 삭제
clear()
: index의 값 삭제