C
객체 개념이 없는 c 언어에서는 구조체를 사용하면 문제를 우아하게 처리할 수 있다.
소스코드
#include <stdio.h>
#define ARRSIZE 5
typedef int element;
typedef struct {
element arr[ARRSIZE];
int top;
}stack;
void init(stack *s) {
s->top = -1; /* 아무것도 없는 상태를 -1 */
}
int is_empty(stack *s) {
return (s->top == -1);
}
int is_full(stack *s) {
return (s->top == ARRSIZE - 1);
}
void push(stack *s, element e) {
if (is_full(s)) {
printf("스택 포화 에러\n");
}
else {
s->arr[++s->top] = e;
}
}
element pop(stack *s) {
if (is_empty(s)) {
printf("스택 공백 에러\n");
return -1;
}
else {
/*
배열은 top 값으로 참조되기 때문에
pop 한 값을 NULL 로 바꾸어주지 않아도 괜찮다.
*/
return s->arr[s->top--];
}
}
element peek(stack *s) {
if (is_empty(s)) {
printf("스택 공백 에러\n");
return -1;
}
else {
return s->arr[s->top];
}
}
int main() {
stack s; /* 구조체 변수 선언 시 배열 create */
init(&s);
push(&s, 1);
push(&s, 2);
push(&s, 3);
push(&s, 4);
push(&s, 5);
push(&s, 6);
printf("%d\n", pop(&s));
printf("%d\n", peek(&s));
return 0;
}
출력
스택 포화 에러
5
4
'Data Structure' 카테고리의 다른 글
스택 미로 탐색 문제 (0) | 2020.07.12 |
---|---|
스택 수식의 계산 (0) | 2020.07.05 |
스택 괄호 검사 (0) | 2020.06.21 |
연결 리스트로 구현한 스택 (0) | 2020.06.16 |
스택 (0) | 2020.06.10 |
댓글