‡๐Ÿ‘ฉ‍๐Ÿ’ป ‡/º Java

[์ž๋ฃŒ๊ตฌ์กฐ] ์Šคํƒ (Stack) ๊ตฌ์กฐ (Java)

Trudy | ์†ก์—ฐ 2023. 12. 4. 11:29

๐Ÿ“์Šคํƒ์ด๋ž€?

 

ํ›„์ž…์„ ์ถœ('LIFO') ๋ฐฉ์‹์œผ๋กœ ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜๊ฐ„๋‹ค
๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž… ์‚ญ์ œํ•˜๋Š” ์—ฐ์‚ฐ์ด ํ•œ์ชฝ์—์„œ๋งŒ ์ง„ํ–‰๋จ

 


๐Ÿ“์Šคํƒ ๊ตฌํ˜„

 

๋ฐฐ์—ด์„ ์ด์šฉํ•ด์„œ ์ˆซ์ž๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ณ€์ˆ˜ ์ƒ์„ฑ
๋ฐฐ์—ด์— ์ง์ ‘ ์ ‘๊ทผํ•ด์„œ ์ˆซ์ž๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ ‘๊ทผ ์ œ์–ด์ž๋กœ ์ œ์–ด
์ˆซ์ž๋ฅผ ์–ด๋””๊นŒ์ง€ ์ €์žฅํ–ˆ๋Š”์ง€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜ top ์ƒ์„ฑ

 

 


๐Ÿพ ์ƒ์„ฑ์ž


ํฌ๊ธฐ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„์„œ ํ•ด๋‹น ํฌ๊ธฐ๋งŒํผ ์ •์ˆ˜๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด ์ƒ์„ฑ
top์— -1 ์ €์žฅ

๐Ÿพ isEmpty


์Šคํƒ์— ๊ฐ’์ด ๋ชจ๋‘  ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ
top์ด -1์ด๋ฉด true๋ฅผ ๋ฐ˜ํ™˜
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜

๐Ÿพ  isFull


์Šคํƒ์— ๊ฐ’์ด ๋ชจ๋‘ ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
top์ด ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ณด๋‹ค 1์ž‘์œผ๋ฉด true ๋ฐ˜ํ™˜
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜

๐Ÿพ  peek


์ œ์ผ ๋งˆ์ง€๋ง‰์— ์ €์žฅ๋œ ๊ฐ’ ํ™•์ธ
์ œ์ผ ๋งˆ์ง€๋ง‰์— ์ €์žฅ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜

๐Ÿพ  push


๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์—ฐ์‚ฐ
์Šคํƒ์ด ๊ฐ€๋“์ฐจ ์žˆ์ง€ ์•Š์œผ๋ฉด 
top์„ 1์ฆ๊ฐ€ํ•˜๊ณ  ํ•ด๋‹น ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ์˜ ๋ฐฐ์—ด์— ๋ฐ์ดํ„ฐ ์ €์žฅ

๐Ÿพ pop


๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ์—ฐ์‚ฐ
top ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ์˜ ๋ฐฐ์—ด์— ๊ฐ’์„ ๊บผ๋‚ด๊ณ 
top ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ์˜ ๋ฐฐ์—ด์— ๊ฐ’์„ ๋น„์›Œ์ฃผ๊ณ 
top์„ 1 ๊ฐ์†Œ

 

๐Ÿพ display
์Šคํƒ์— ์ €์žฅ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ธฐ๋Šฅ

 

๐Ÿ“๊ตฌํ˜„ ์ฝ”๋“œ

package stack;

public class Stack {
    int size;
    int top = -1;
    private int[] stack;
    public Stack(int size) {
        this.size = size;
        stack = new int[size];
    }


    boolean isEmpty(){
        if(top == -1) return true;
        else return false;
    }

    boolean isFull(){
        if(top == size-1) return true;
        else return false;
    }

    public int peek(){
        return stack[top];
    }

    public void push(int x){
        if(this.isFull()){
            System.out.println("์Šคํƒ์ด ๊ฐ€๋“ ์ฐธ");
        }
        else {
            top = top + 1;
            stack[top] = x;
        }
    }

    public int pop(){
        if(isEmpty()){
            System.out.println("์Šคํƒ์ด ๋น„์–ด ์žˆ์Œ");
            return -1;
        }
        else {
            int x = stack[top];
            top--;
            return x;
        }
    }

    void display(){
        for (int i = 0; i <= top; i++) {
            System.out.print("[" + stack[i] + "] ");
        }
        System.out.println();
    }
}