🏫 Open API_JAVA

[22일차] flex / Stack / Queue

Dorothy_YANG 2022. 8. 20. 22:50
728x90

20220819(금)

  • 목차
    - CSS, flex 복습
    - Stack
    - Queue

< 복습 >

Dorothy 작업

 

Dorothy 작업


< Stack - 후입선출 LIFO(Last In First Out) >

- stack : 차곡차곡 쌓아 올린 형태의 자료구조
- push : stack에 data를 넣는 연산

- pop : stack에서 data를 빼는 연산

- Stack-Full 인 경우, SP(Stack Pointer) 값은? 마지막에 머물러있다. ➡ 더이상 못넣어,,push 미실행

 

 

< Stack 구조 짜보기 >

<script>        
        const max = 5;         // 데이터 개수의 최대치      
        const stack = [];       // 스택 자료구조        
        let SP = 0;             // Stack Pointer        
        let count = 0;
       
        // null을 리턴한경우 stack full;
        const push = function(data)
        {
            if (count === max)
            {                
                return false;
            }

            stack[SP] = data;
            count++;
            SP++;

            return true;

        }

        // state === EMPTY, null
        const pop = function()
        {
            if (count === 0)
            {
                return null;
            }

            SP--;
            count--;
            return stack[SP];
        }

        const printStack = function()
        {
            let a = [];
            for (let i = 0; i < count; i++)
            {
                a.push(stack[i]);
           
            }

            console.log(a.join());

        }

        console.log(push({a:1}));        
        console.log(push(22));        
        console.log(push(33));
        console.log(push(44));        
        console.log(push(55));
        console.log(push(66));

        console.log(pop());
        console.log(pop());
        console.log(pop());
        console.log(pop());
        console.log(pop());
       
        console.log(pop());

       
    </script>

 


< Queue - 선입선출 FIFO(First In First Out) >

queue : 줄을 서서 기다리는 것 : 먼저 온 사람이 먼저다!

 

< Queue 구조 짜보기 >

    <script>
        // queue 데이터 구조.
        const queue = [];    

        // 최대 데이터 개수.
        const max = 5;

        // 몇개 데이터가 있는가?
        let count = 0;

        // rear : push-pointer
        let rear = 0;

        // front : pop-pointer
        let front = 0;

        const enqueue = function(data)
        {
            if (count === max)
                return false;

            // queue에다 데이터를 넣어준다.
            rear = rear % max;          
           
            queue[rear] = data;
            count++;                    
            rear++;
           
            return true;
           
        }

        const dequeue = function()
        {
            let result;
            if (count === 0)
                return false;

            front = front % max;
            result = queue[front];
            count--;
            front++;
           
            return result;
       
        }

        enqueue(11);
        enqueue(22);
        enqueue(33);

        console.log(dequeue());
        console.log(dequeue());
             

        enqueue(44);
        enqueue(55);
        enqueue(66);
        enqueue(77);

        console.log(dequeue());
        console.log(dequeue());
        console.log(dequeue());
        console.log(dequeue());
        console.log(dequeue());
       

    </script>

 

 

728x90