[Data Structure]Java Stack & Queue

Goghยท2023๋…„ 1์›” 2์ผ

Data Structure

๋ชฉ๋ก ๋ณด๊ธฐ
1/5
post-thumbnail

๐ŸŽฏ ๋ชฉํ‘œ : ์Šคํƒ๊ณผ ํ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•œ ๊ฐœ๋… ์ดํ•ดย 

๐Ÿ“’ Stack & Queue

photo

๐Ÿ“Œ Stack

  • LIFO ๊ตฌ์กฐ, ๋งˆ์ง€๋ง‰์— ์ €์žฅ๋œ ๊ฒƒ์„ ์ œ์ผ ๋จผ์ € ๊บผ๋‚ผ์ˆ˜ ์žˆ๋‹ค.
  • ex) ์ˆ˜์‹ ๊ณ„์‚ฐ, undo/redo, ๋’ค๋กœ/์•ž์œผ๋กœ ์ด๋™(์›น)
  • Stack์€ ํด๋ž˜์Šค๋‹ค.

๐Ÿ“Œ Queue

  • FIFO ๊ตฌ์กฐ, ์ œ์ผ ๋จผ์ € ์ €์žฅํ•œ ๊ฒƒ์„ ์ œ์ผ ๋จผ์ € ๊บผ๋‚ผ์ˆ˜ ์žˆ๋‹ค.
  • ex)ย ์ตœ๊ทผ ์‚ฌ์šฉ๋ฌธ์„œ, ์ธ์‡„ ์ž‘์—…๋Œ€๊ธฐ๋ชฉ๋ก, ๋ฒ„ํผ(Buffer)
  • Queue๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋‹ค.

๐Ÿ‘‰ ์˜ˆ์ œ

import java.util.*;

class StackQueue {
    public static void main(String[] args) {
        Stack st = new Stack();
        Queue q = new LinkedList();	// Queue๋Š” ์ธ์Šคํ„ด์Šค๋‹ค, LinkedListํด๋ž˜์Šค๋Š” Queue์˜ ๊ตฌํ˜„ ํด๋ž˜์Šค๋‹ค.

        st.push("0");
        st.push("1");
        st.push("2");

        q.offer("0");
        q.offer("1");
        q.offer("2");

        System.out.println("= Stack =");
        while(!st.empty()) {
            System.out.println(st.pop()); // Input๋œ ์—ญ์ˆœ์œผ๋กœ ๋์—์„œ๋ถ€ํ„ฐ ์ถœ๋ ฅ๋œ๋‹ค.
        }

        System.out.println("= Queue =");
        while(!q.isEmpty()) {
            System.out.println(q.poll()); // Input๋œ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ๋œ๋‹ค.
        }
    }
}
= Stack =
2
1
0
= Queue =
0
1
2
  • Stack์€ Input๋œ ์—ญ์ˆœ์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค.
  • Queue๋Š” Input๋œ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ๋œ๋‹ค.
  • Stack์˜ ๋ฉ”์†Œ๋“œ
    boolean empty() ๋น„์–ด์žˆ๋Š”์ง€ ์•Œ๋ ค์คŒ
    Object peek() ๋งจ์œ„ ์ €์žฅ๋œ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ด์ง€์•Š๊ณ  ๊ฐ’๋งŒ ๋ฐ˜ํ™˜, ๋น„์—ˆ์„์‹œ EmptyStackException๋ฐœ์ƒ
    Object pop() ๋งจ์œ„ ์ €์žฅ๋œ ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ธ๋‹ค. ๋น„์—ˆ์„์‹œ EmptyStackException๋ฐœ์ƒ
    Object push(Object item) Stack์— ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•œ๋‹ค.
    int search(Object o) Stack์—์„œ ๊ฐ์ฒด o๋ฅผ ์ฐพ์•„์„œ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์—†์œผ๋ฉด -1๋ฐ˜ํ™˜, Stack์˜ ์ธ๋ฑ์Šค ์œ„์น˜ ๊ฐ’์€ 0์ด ์•„๋‹Œ 1๋ถ€ํ„ฐ ์‹œ์ž‘
  • Queue์˜ ๋ฉ”์†Œ๋“œ
    boolean offer(Object o) Queue์— ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ณ  ์„ฑ๊ณตํ•˜๋ฉด true ์‹คํŒจํ•˜๋ฉด false ๋ฐ˜ํ™˜.
    Object poll() Queue์—์„œ ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ด์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋น„์–ด์žˆ์œผ๋ฉด null์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
    Object peek() ์‚ญ์ œ์—†์ด ์ œ์ผ ์•„๋ž˜ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. Queue๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด null์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
    add์™€ remove๋Š” ๋น„์–ด์žˆ์„์‹œ ๊ฐ๊ฐ illegalStateException๊ณผ NoSuchElementException ๋ฐœ์ƒ
    Queue๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค์ค‘ ๋งŽ์ด ์“ฐ์ด๋Š” ํด๋ž˜์Šค๋กœ๋Š” LinkedList๊ฐ€ ์žˆ๋‹ค.
profile
์ปดํ“จํ„ฐ๊ฐ€ ํ• ์ผ์€ ์ปดํ“จํ„ฐ๊ฐ€

0๊ฐœ์˜ ๋Œ“๊ธ€