without haste but without rest
[C / 자료구조] 3주차 실습문제 - 구조체 배열 스택 본문
구조체를 활용하는 스택
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 5
/*
구조체를 활용한 배열 스택
단점
1. 배열의 크기를 변경할 수 없다.
2. 메모리 사용측면에서 비효율적이다.
해결 방법
1. 동적 배열 스택
*/
typedef int element; // element is data tpye of stack, it is easy to adjust code
typedef struct {
element data[MAX_SIZE];
int top;
} stackType;
void init_stack(stackType* s);
int is_full(stackType* s);
int is_empty(stackType* s);
void push(stackType* s, element item);
element pop(stackType* s);
element peek(stackType* s);
int main(void) {
stackType s;
init_stack(&s);
for (int i = 1; i <= 6; i++) {
push(&s, i*i);
}
printf("peek: %d\n", peek(&s));
for (int i = 0; i <= 6; i++) {
printf("pop: %d\n", pop(&s));
}
}
void init_stack(stackType* s) {
s->top = -1;
}
int is_full(stackType* s) {
return (s->top >= (MAX_SIZE - 1));
}
int is_empty(stackType* s) {
return (s->top == -1);
}
void push(stackType* s, element item) {
if (is_full(s)) {
fprintf(stderr, "Stack Overflow\n");
return;
}
s->data[++(s->top)] = item;
}
element pop(stackType* s) {
if (is_empty(s)) {
fprintf(stderr, "Stack Underflow\n");
exit(1);
}
return s->data[(s->top)--];
}
element peek(stackType* s) {
if (is_empty(s)) {
fprintf(stderr, "Stack Underflow\n");
exit(1);
}
return s->data[(s->top)];
}
'Homework' 카테고리의 다른 글
[C / 자료구조] 3주차 과제 - 미로 문제 (0) | 2020.04.04 |
---|---|
[C / 자료구조] 3주차 실습문제 - 동적 배열 스택 (0) | 2020.04.04 |
[C / 자료구조] 3주차 실습문제 - 전역변수 스택 (0) | 2020.04.04 |
[C / 자료구조] 2주차 과제 - ADT 구현, 사각형 문제 (0) | 2020.04.04 |
[C / 자료구조] 1주차 과제 - 하노이 탑 (0) | 2020.04.04 |
Comments