Bleeding edge

stack 2개로 queue를 구현하는 방법을 설명해주세요 본문

CS

stack 2개로 queue를 구현하는 방법을 설명해주세요

codevil 2022. 7. 8. 13:04

stack : [1,2,3]이 있다고 하면 먼저 들어간 것이 나중에 나오니 3부터 나온다.

queue : [1,2,3]이 있다고하면 먼저 들어간 것이 먼저 나오니, 1부터 나온다.

둘이 방향이 반대라는 것을 볼 수 있다.

stack1은 [1,2,3]을 담고있고 stack2는 비어있는 stack 이다.

add는 stack1에 [1,2,3,4]와 같이 그냥 더하면 된다.

pop같은 경우는 stack1에서 stack2로 이동시킨다. 이때 stack은 FIFO이기 때문에 [3,2,1]과 같이 reverse 된다. 이때 stack에서 한개를 뺀다면 1을 빼는 것이 가능하다. stack1은 정방향(FILO) stack2는 역방향(FIFO) 방향을 나타낸다. 만일 이때 한개를 add한다고 하면, stack2에 있는것을 다시 stack1으로 옮기고 새로운 것([1,2,3]에서 이어 넣는다면 4)을 넣으면 된다.