이와 같은 출력 구조를 가지는게 Stack이다.
FILO 이다.
구현은 5개의 함수면 충분하다.
init(), isEmpty(), isFull(), push(), pop()
void init(void)
{
top = 0;
}
int isEmpty(void)
{
return (top == 0);
}
int isFull(void)
{
return (top == MAX);
}
int push(int a)
{
if (isFull()) { printf("Stack이 꽉 찼습니다.\n"); return 0; }
STACK[top++] = a;
return 1;
}
int pop(int* a)
{
if (isEmpty()) { printf("Stack이 비었습니다.\n"); return 0; }
*a = STACK[--top];
return 1;
}
이제 사용해 보겠다.
int main(void) {
init();
int a;
int flag = 1;
while (flag)
{
printf("PUSH : 1, POP : 2 를 입력하세요 :");
scanf("%d", &a);
switch (a)
{
case 1:
printf("PUSH 할 값을 입력하세요 :");
int b;
scanf("%d", &b);
if (push(b)) printf("PUSH가 완료되었습니다.\n\n");
else printf("PUSH에 실패하였습니다.\n\n");
break;
case 2:
int c;
if (pop(&c)) printf("POP된 값은 %d 입니다.\n\n", c);
else printf("POP에 실패하였습니다.\n\n");
break;
default:
printf("프로그램을 종료합니다.\n\n");
flag = 0;
break;
}
}
return 0;
}
이렇게 간단하게 사용할 수 있다.
전체코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX 10
int STACK[MAX];
int top = 0;
void init(void);
int isEmpty(void);
int isFull(void);
int push(int a);
int pop(int* a);
int main(void) {
init();
int a;
int flag = 1;
while (flag)
{
printf("PUSH : 1, POP : 2 를 입력하세요 :");
scanf("%d", &a);
switch (a)
{
case 1:
printf("PUSH 할 값을 입력하세요 :");
int b;
scanf("%d", &b);
if (push(b)) printf("PUSH가 완료되었습니다.\n\n");
else printf("PUSH에 실패하였습니다.\n\n");
break;
case 2:
int c;
if (pop(&c)) printf("POP된 값은 %d 입니다.\n\n", c);
else printf("POP에 실패하였습니다.\n\n");
break;
default:
printf("프로그램을 종료합니다.\n\n");
flag = 0;
break;
}
}
return 0;
}
void init(void)
{
top = 0;
}
int isEmpty(void)
{
return (top == 0);
}
int isFull(void)
{
return (top == MAX);
}
int push(int a)
{
if (isFull()) { printf("Stack이 꽉 찼습니다.\n"); return 0; }
STACK[top++] = a;
return 1;
}
int pop(int* a)
{
if (isEmpty()) { printf("Stack이 비었습니다.\n"); return 0; }
*a = STACK[--top];
return 1;
}
'프로그래밍 > 개발 이야기' 카테고리의 다른 글
[자료구조] Priority Queue 우선순위 큐 (0) | 2021.04.03 |
---|---|
[자료구조] Queue의 En,Dequeue를 이용해서 출력을 반전시켜보자 (0) | 2021.04.03 |
[백준] 2839번 문제풀이 (0) | 2021.04.01 |
[알고리즘] 최대 Subarray 찾기 (0) | 2021.03.26 |
메이커스페이스 레이저커팅기 이용방법 (0) | 2021.03.14 |
댓글