#include <stdlib.h>
#include <stdio.h>
/**
* Author: Ozan Özenoğlu
* Date : 10/10/2020
* */
struct linked_list_node {
struct linked_list_node *next;
int val;
};
typedef struct linked_list_node linked_list_node_t;
struct linked_list {
int size;
linked_list_node_t *head;
};
typedef struct linked_list linked_list_t;
void init(linked_list_t *list){
list->size = 0;
list->head = (void*)0;
printf("linked list init completed\n");
}
void add(linked_list_t *list, int val){
linked_list_node_t *node = malloc(sizeof(linked_list_node_t)*1);
node->val = val;
node->next = list->head;
list->head = node;
list->size++;
}
int get(linked_list_t *list){
if(list->size == 0) {
return -1;
}
list->size--;
linked_list_node_t *node = list->head;
list->head = node->next;
int result = node->val;
free(node);
return result;
}
int main() {
linked_list_t my_list;
init(&my_list);
add(&my_list, 1);
add(&my_list, 2);
add(&my_list, 3);
add(&my_list, 4);
add(&my_list, 5);
printf("%d \n",get(&my_list));
printf("%d \n",get(&my_list));
printf("%d \n",get(&my_list));
printf("%d \n",get(&my_list));
printf("%d \n",get(&my_list));
printf("%d \n",get(&my_list));
printf("%d \n",get(&my_list));
return 0;
}