Stack linked list

Run Settings
LanguageC
Language Version
Run Command
#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); }
Editor Settings
Theme
Key bindings
Full width
Lines