Data_structure
(Data_structure) Stack
K_Hyul
2023. 9. 25. 14:26
728x90
Stack은 LIFO구조 즉, 최근에 입력된게 먼저 나오는 구조이다.
Stack에는 기본적으로 .push(), .pop() 함수가 존재하고 필요에 따라 .top(), empty() 가 있다.
push는 말 그대로 이 구조에 입력하는 것이고
pop은 제일 위에 있는 것을 꺼내는 것이다.
top은 제일 위에 있는 것에 대한 정보를 출력하고
empty는 현재 비어있는지 확인하는 함수이다.
밑에 코드는 Wikipedia에서 공유된 C 코드이다.
다음은 윈도우 기준의 C언어로 제작된 스택의 예제이다.
/* Stack Example */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int Stack[10];
int top=-1;
int push(int dat);
int pop(void);
int printstack(void);
int main(void) {
int inval, innum;
printf(" - Algorithm Stack - \n");
printf("Made by POM(lovebeen04@gmail.com)\n");
printf("=================================\n");
printf("1. Push Value\n");
printf("2. Pop Value\n");
printf("3. Print Stack\n");
printf("4. Exit\n");
printf("=================================\n");
printf("> Enter Number: ");
scanf("%d", &inval);
switch(inval) {
case 1:
system("cls");
printf("> Enter Number: ");
scanf("%d", &innum);
push(innum);
break;
case 2:
pop();
break;
case 3:
printstack();
break;
case 4:
system("pause");
break;
default:
system("cls");
printf(" Error\n");
break;
}
return 0;
}
int push(int dat) {
if(top >= 9) {
system("cls");
printf("Stack Overflow\n");
getch();
system("cls");
main();
} else {
top++;
Stack[top] = dat;
system("cls");
printf("Push %d\n", dat);
getch();
system("cls");
main();
}
}
int pop(void) {
system("cls");
if(top <= -1) {
system("cls");
printf("Stack Downflow\n");
getch();
system("cls");
main();
} else {
Stack[top] = 0;
top--;
main();
}
}
int printstack(void) {
int a;
system("cls");
printf("=================================\n");
for(a=9; a>=0; a--) printf("%d\n", Stack[a]);
printf("=================================\n");
getch();
system("cls");
main();
}
728x90