스택은 LIFO(Last In First Out)의 구조로 한개의 포인터로 운영되는 자료 구조입니다.
한쪽 방향에서만 입출력을 수행하는 구조입니다.
스택에서의 삽입 알고리즘은
자료를 기억시키고자할 경우 먼저 top 포인터를 하나 증가시키고 데이터(X)를 스택에 기억시킵니다.
If top>=M overflow ...... 전체크기 M보다 top 포인터가 크거나 같으면 오버플로우
top ← top + 1 ...... top 포인터의 값이 1 증가
STACK(top) ← X ...... 원하는 자료 X 를 스택의 top 포인터 위치에 기억시킴
스택에서의 삭제 알고리즘은
top 포인터에 위치한 곳의 내용을 먼저 읽어오고 포인터를 1 감소시켜 읽어온 데이터에 접근하지 못하도록합니다.
If top=0 underflow ...... top 포인터가 0이면 스택에 데이터가 없음
X ← STACK(top) ...... top 포인터의 값을 X에 기억시킴
top ← top - 1 ...... top 포인터의 값을 1 감소시킴
위와 같은 알고리즘으로
수식의 계산, 인터럽트의 처리, 서브루틴의 복귀 번지를 저장하는데 사용됩니다.
알고리즘의 X 를 수식의 데이터나 연산자, 인터럽트에서의 복귀주소, 서브루틴의 복귀 주소로 이해해주시면 될 것 같습니다.
한쪽 방향에서만 입출력을 수행하는 구조입니다.
스택에서의 삽입 알고리즘은
자료를 기억시키고자할 경우 먼저 top 포인터를 하나 증가시키고 데이터(X)를 스택에 기억시킵니다.
If top>=M overflow ...... 전체크기 M보다 top 포인터가 크거나 같으면 오버플로우
top ← top + 1 ...... top 포인터의 값이 1 증가
STACK(top) ← X ...... 원하는 자료 X 를 스택의 top 포인터 위치에 기억시킴
스택에서의 삭제 알고리즘은
top 포인터에 위치한 곳의 내용을 먼저 읽어오고 포인터를 1 감소시켜 읽어온 데이터에 접근하지 못하도록합니다.
If top=0 underflow ...... top 포인터가 0이면 스택에 데이터가 없음
X ← STACK(top) ...... top 포인터의 값을 X에 기억시킴
top ← top - 1 ...... top 포인터의 값을 1 감소시킴
위와 같은 알고리즘으로
수식의 계산, 인터럽트의 처리, 서브루틴의 복귀 번지를 저장하는데 사용됩니다.
알고리즘의 X 를 수식의 데이터나 연산자, 인터럽트에서의 복귀주소, 서브루틴의 복귀 주소로 이해해주시면 될 것 같습니다.