C Data Structure: Linked List

#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;
}

Leave a Reply

Your email address will not be published. Required fields are marked *