#include <stdio.h>
#include <stdlib.h> // malloc함수(동적 할당), free함수(동적 해제)
#define EMPTY 0
typedef struct node {
int data;
struct node* link;
} Stack;
Stack* GetNode() { // 노드를 만들어주는 함수
Stack* newNode = (Stack*)malloc(sizeof(Stack));
newNode->link = EMPTY; // null
return newNode;
}
void push(Stack** top, int data) {
Stack* newNode = GetNode();
newNode->data = data;
newNode->link = *top;
*top = newNode;
}
int pop(Stack** top) {
if (*top==EMPTY){
printf("nothing!₩n");
return 0;
}
int data = (**top).data;
Stack* tmp = *top;
*top = (**top).link;
free(tmp);
return data;
}
/*
int pop(Stack** top) {
if (*top==EMPTY){
printf("nothing!₩n");
return 0;
}
int data = (**top).data;
Stack** tmp = (**top).link;
free(*top);
*top = tmp;
return data;
} */
void empty(Stack** top) {
while (*top != EMPTY){
pop(top);
}
}
void main() {
Stack* top = EMPTY;
push(&top, 10);
push(&top, 20);
push(&top, 30);
pop(&top);
empty(&top);
}