스택: 선형리스트로서 입출력이 한쪽으로 제한된 구조를 가지고 있습니다. 즉 구현시 배열을 생성합니다.
LIFO(LastInFirstOut)
데이터의 입력 동작을 push, 데이터의 출력동작을 pop이라고 하며, 데이터 입출력은 top부분에서 수행합니다.
함수호출, resursive call, 수식계산등에서 사용합니다.
데이터의 추가시 top= top+1 데이터의 삭제시 top= top-1
스택의 원소 삽입
push(S, x) top <- top +1; if (top>stack_SIZE) then overflow; else S(top) <- x; end push()
스택의 원소 삭제
pop(S) if(top=0) then underflow; else{ return S(top); top <- top -1; } end pop()
큐: 데이터의 입출력이 양쪽 방향에서 이루어지는 구조
데이터의 이렵을 위해 tail(rear)을 사용하고, 출력을 우리 head(front)변수를 사용합니다
FIFO(FirstInFirstOut)구조
데이터의 추가를 위해 tail=tail+1을, 데이터의 삭제를 위해 head= head+1을 사용
운영체제 시스템상에서 데이터의 도착 순서대로 처리를 위해 사용.
순차 큐의 원소 삽입
enQueue(Q, item) IF(isFull(Q))then Queue_Full(); else{ rear <- rear +1; Q[rear] <- item; } end enQueue()
순차 큐의 원소 삭제
deQueue(Q) if (isEmpty(Q))then Queue_Empty(); else{ front <- front +1; return Q[front]; } end deQueue()