스택에 1,2,3 삽입 후 모든 원소를 삭제함과 동시에 출력하고 스택이 비었으면 1, 아니면 0 출력하기
top변수와 스택배열을 하나의 구조체로 묶고, 구조체 변수를 이용하여 포인터로 값을 수정하는 방식의 장점
=> 구조체 변수를 여러 개 선언 함으로서 스택을 여러개 구현하기 쉬움
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | #include<stdio.h> #include<stdlib.h> #define max 5 typedef struct { int stack[max]; int top; }stackType; void init(stackType* s); void push(stackType* s, int x); int pop(stackType* s); int is_full(stackType* s); int is_empty(stackType* s); int main() { stackType st; //스택 초기화 하기 init(&st); push(&st, 1); push(&st, 2), push(&st, 3); printf("%d\n", pop(&st)); printf("%d\n", pop(&st)); printf("%d\n", pop(&st)); printf("스택이 비었는지 ? %d\n", is_empty(&st)); } void init(stackType* s) { s->top = -1; } int is_full(stackType* s) { return s->top == max - 1; } int is_empty(stackType* s) { return s->top == -1; } void push(stackType* s, int x) { if (is_full(s)) { fprintf(stderr, "원소가 다 찼습니다.\n"); return; } s->stack[++(s->top)] = x; } int pop(stackType* s) { if (is_empty(s)) { fprintf(stderr, "원소가 없습니다\n"); exit(1); } return s->stack[(s->top)--]; } | cs |
결과
'자료구조 > 스택' 카테고리의 다른 글
중위 수식을 후위 수식으로 변환하는 프로그램 (0) | 2020.04.09 |
---|---|
스택을 이용한 후위 표기식 계산 프로그램 (0) | 2020.04.09 |
스택을 이용한 괄호검사 프로그램 (0) | 2020.04.09 |
구초체배열을 이용한 스택 구현 (2) | 2020.04.09 |
전역 변수를 이용한 간단한 스택 구현 (0) | 2020.04.09 |