'Implementing LinkedList in C

I implemented a linked list for my school assignment but when I try to print out value of a node, the first node always get printed with memory address and I can't figure out why it's happening. 

I tried debugging and as I assign tail of list to the new node, the value of the node gets printed out as memory address.

Why is this happening?

int AppendLinkedList(LinkedListPtr list, int value) {
    LinkedListNodePtr newNode = CreateLinkedListNode(value);
    if (list->head == NULL) {
        list->head = newNode;
        list->tail = newNode;
        
        return 0;
    }
    LinkedListNodePtr tailCopy = list->tail;
    newNode->prev = tailCopy;
    tailCopy->next = newNode;
    list->tail = newNode;
    return 0;
}

LinkedListNode *CreateLinkedListNode(int data) {
    LinkedListNodePtr newNode;
    newNode = (LinkedListNodePtr)malloc(sizeof(LinkedListNode));
    newNode->data = data;
    printf("%d\n", data);
    return newNode;
}

int main() {
    LinkedListPtr list = CreateLinkedList();
    int data = 5;
    AppendLinkedList(list, data);
}

typedef struct ll_node {
    int           data;       // Data this node holds 
    struct ll_node *next;     // next node in list, or NULL
    struct ll_node *prev;     // prev node in list, or NULL
} LinkedListNode, *LinkedListNodePtr;

typedef struct ll_head {
    uint64_t          num_elements;  //  # elements in the list
    LinkedListNodePtr head;  // head of linked list, or NULL if empty
    LinkedListNodePtr tail;  // tail of linked list, or NULL if empty
} *LinkedListPtr;

LinkedListPtr CreateLinkedList() {
    LinkedListPtr list;
    list = (LinkedListPtr)malloc(sizeof(LinkedListPtr));
    if (list == NULL) {
        return NULL;
    }
    return list;
} 
c


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source