[Java] 스텍과 큐

상트리버·2023년 1월 8일
0

Java

목록 보기
6/10
post-thumbnail

1. 스텍이란

1.1 스텍

스텍(stack)은 데이터를 일시적으로 쌓아 놓느 ㄴ자료구조로, 데이터의 입력과 출력 순서는 후입선출(LIFO : Last In Frist Out)이다. 즉 가장 나중에 넣은 데이터를 가장 먼저 꺼낸다
푸시(Push) : 스텍에 데이터를 넣는 작업
팝(Pop) : 스텍에서 데이터를 꺼내는 작업
꼭대기(Top) : 푸시와 팝이 이루어 지는 쪽
바닥(Bottom) : 스택의 가장 아랫 부분

1.2 스텍 코드로 구현

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를 출력해준다.


2. 큐

큐는 스택과 마찬가지로 데이터를 일시적으로 쌓아 놓는 자료구조입니다.
하지만 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(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의 값 삭제

0개의 댓글