반응형
C언어로 스택 구현하기
우선 스택을 구현하기 위해 배열이 필요하다.
여기선, 미리 크기를 정한 배열을 이용하여, 스택을 구현해본다.
#include<stdio.h> #include<stdlib.h> #define SIZE 10 //스택 구조체 typedef struct stack { int arr[SIZE]; int top; }; void stack_init(stack *pstack) { pstack -> top = -1; } //스택이 비어있는지 체크 bool isEmpty(stack *pstack) { if (pstack->top == -1) { return true; } return false; } //삽입 void push(stack *pstack, int data) { pstack->top += 1; pstack->arr[pstack->top] = data; } //삭제 void pop(stack *pstack){ if (isEmpty(pstack) == true) { printf("stack is empty.."); }else{ printf("pop : %d\n", pstack->arr[pstack->top]); pstack->top -= 1; } } //맨위 값 출력 void peek(stack *pstack) { if (isEmpty(pstack) == true) { printf("stack is empty.."); exit(-1); }else { printf("peek : %d\n", pstack->arr[pstack->top]); } } //배열 스택을 출력 void print(stack *pstack) { if (isEmpty(pstack) == true) { printf("stack is empty.."); exit(-1); } else { for (int i = 0; i <= (pstack->top); i++) { printf("%d번째 %d\n", (i+1),pstack->arr[i]); } } } int main() { stack stack; stack_init(&stack); push(&stack, 1); push(&stack, 4); push(&stack, 5); push(&stack, 3); push(&stack, 2); print(&stack); pop(&stack); peek(&stack); return 0; }
반응형
댓글