배열을 이용한 스택 구현
// # 배열을 이용한 스택 #
#include <iostream>
using namespace std;
// # 배열 크기 #
#define MAX_STACK_SIZE 5
typedef int element;
// # 스택에 원소를 저장하기 위한 배열 #
element stack[MAX_STACK_SIZE];
// # TOP의 위치 #
int top = -1; // # 처음엔 맨 아래를 위치하기 때문에 '-1' #
// # 스택 초기화 함수 #
void initialize()
{
// # TOP 인덱스를 -1로 주어 스택을 비움 #
top = -1;
}
// # 스택이 비어 있으면 true 아니면 false를 반환 #
int isEmpty()
{
// # TOP 인덱스가 -1이면 true #
return (top == -1);
}
// # 스택이 가득 차 있으면 true 아니면 false를 반환 #
int isFull()
{
return (top == (MAX_STACK_SIZE - 1));
}
// # 스택의 TOP에 원소를 삽입 #
void push(element item)
{
// # 스택이 가득 차있는지를 확인 #
if (isFull())
{
cout << "스택 가득 참" << endl;
}
else
{
// # TOP 인덱스를 증가시킨 후 현재 TOP에 원소 삽입 #
stack[++top] = item;
}
}
// # 스택의 TOP에서 원소를 삭제 #
element pop()
{
// # 스택이 비었는지를 확인한다 #
if (isEmpty())
{
cout << "스택 비어 있음" << endl;
}
else
{
// # 현재 TOP에서 원소를 삭제한 후 TOP 인덱스를 감소시킴 #
return stack[top--];
}
}
void main()
{
push('A');
push('B');
push('C');
push('D');
push('E');
while (isEmpty() == false)
{
printf("%c\t", pop());
}
getchar();
}
'- Programming > - 자료구조' 카테고리의 다른 글
★ 11. 링크드 리스트와 배열의 차이 (0) | 2017.02.08 |
---|---|
★ 10. 연결 리스트를 이용한 스택 구현하기 (0) | 2016.07.19 |
★ 8. 스택 (0) | 2016.07.19 |
★ 7. 이중 연결 리스트 구현하기 (0) | 2016.07.19 |
★ 6. 이중 연결 리스트 (0) | 2016.07.19 |