본문 바로가기
My Image
전공지식

[C언어] 스택[Stack] 구현하기

by Lim-Ky 2019. 5. 17.
반응형

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;

}
반응형

댓글