문제6) 스택(Stack)의 개념을 설명하고, 아래의 조건을 만족하는 스택의 작동 알고리즘을 작성하시오.
K : 스택의 크기
Top : 스택 포인터
S : 스택의 이름
가. 스택(S)의 스택 포인터(Top)를 1 증가시킨다. 스택 포인터가 스택의 크기(K)보다 크면 Overflow 처리
한다. 그렇지 않으면 Item이 가지고 있는 값을 스택의 Top 위치에 삽입한다.
나. 스택 포인터가 0이면 스택의 바닥이며 더 이상 삭제할 자료가 없으므로 Underflow 처리한다.
그렇지 않으면 Top 위치에 있는 값을 Item으로 옮기고 스택 포인터를 1 감소시킨다.
답)
1. 후입선출(LIFO)형 자료구조, 스택(Stack)의 개념
가. 스택(Stack)의 정의 설명
개념도
|
![]() |
정의
|
Top이라고하는 스택의 한쪽 끝에서만 자료의 삽입(Push)과 삭제(Pop)가 이루어지는 LIFO형 자료구조
|
|
나. 스택(Stack)의 주요 연산과 활용
연산과 활용
|
세부항목
|
상세설명
|
주요연산
|
Push()
|
Stack의 Top 증가 후 데이터 삽입
|
Pop()
|
Stack의 Top 데이터 삭제 및 반환
|
|
Overflow()
|
Stack이 Full 상태로, Push() 불가한 경우
|
|
Underflow()
|
Stack이 Empty 상태로 , Pop() 불가한 경우
|
|
Top
|
스택 최상위 포인터
|
|
활용
|
인터럽트 처리
|
문맥교환시 활용
|
수익의 계산
|
산술식 계산
|
|
|
2. 스택의 삽입을 주어진 조건으로 작동 알고리짐 작성
가. 삽입 연산을 위한 주어진 문제 설명
구분
|
설명
|
삽입(Push)연산
|
![]() |
문제 설명
|
① 스택(S)의 스택 포인터(Top)를 1 증가시킨다
② 스택포인터가 스택의 크기(K)보다 크면 Overflow 처리한다 ③ 그렇지 않으면 Item이 가지고 있는 값을 스택의 Top 위치에 삽입한다. |
|
나. 스택(Stack)의 삽입(Push) 작동 알고리즘 작성
작동 알고리즘 작성
|
알고리즘 설명
|
Push(Item) {
Top = Top + 1; if(Top > K) { Overflow(); } else { S(Top) <- Item; } } |
// 스택 포인터 (Top) 1 증가
// Top이 스택의 크기(K)보다 크면, // Overflow 처리 // 그렇지 않으면 , // Item값을 Top 위치에 삽입 |
|
3. 스택 삭제를 주어진 조건으로 작동 알고리즘 작성
가. 삭제 연산을 위한 주어진 문제 설명
구분
|
설명
|
삭제(Pop)
연산 |
![]() |
문제설명
|
① 스택 포인터가 0이면 스택의 바닥이므로 , Underflow 처리
② 그렇지 않으면 Top 위치에 있는 값을 Item 옮기고 , ③ 스택 포인터 1 감소시킴 |
|
나. 스택(Stack)의 삭제(Pop) 작동 알고리즘
작동 알고리즘 작성
|
알고리즘 설명
|
Pop() {
if(Top == 0) { Underflow(); } else { Item <- S(Top); Top = Top - 1; } return Item; } |
// 스택 포인터(Top)가 0 이면,
// Underflow 처리 // 그렇지 않으면, // Top위치에 있는 값을 Item으로 옮기고 // Top을 1 감소 // Item 값을 리턴 |
|
4. 스택(Stack)을 이용한 후위표기식 계산과정 사례 설명 (147x+)
![]() |
|
공감과 댓글은 아이티신비에게 큰 힘이 됩니다.
블로그 글이 유용하다면 블로그를 구독해주세요.♥
'정보관리기술 > 알고리즘' 카테고리의 다른 글
자료 입출력 (1) | 2024.05.17 |
---|---|
공공기관 협상에 의한 계약체결 (55) | 2024.03.14 |
최단경로 알고리즘 (57) | 2024.03.13 |
방향성 비순환 그래프 (57) | 2024.03.12 |
정렬 / ① (61) | 2024.03.12 |