개발일기/기타

linked list stack (in c)

탐요 2021. 5. 18. 14:53
#include <stdio.h>
#include <stdlib.h>

#define FALSE 0
#define TRUE 1

typedef struct NODE{
    struct NODE *next;
    int num;
}NODE;

NODE *top;

void push(int data);
int pop();
int isempty();

int main(){
    push(1);
    push(2);
    printf("%d\n", pop());
    push(3);

    push(4);
    printf("%d\n", pop());
    printf("%d\n", pop());
    printf("%d\n", pop());

    return 0;
}

void push(int data){
    struct NODE *pushnode=malloc(sizeof(struct NODE));
    pushnode->num=data;
    pushnode->next=top;
    top=pushnode;
}

int pop(){
    if(isempty())
        return ;
    NODE *popnode=top;
    int a=popnode->num;
    top=popnode->next;
    free(popnode);
    return a;
}

int isempty(){
    if(top==NULL)
        return TRUE;
    else
        return FALSE;
}

 

queue 짜다가 최적화 때문에 미루는 중..