#include <stdio.h>
#include <stdlib.h>
struct llnode {
    int data;
 struct    llnode *next;
};
void insert (struct llnode **head, int data);
int
main () {
    struct llnode *head;
    head = NULL;
    printf("starting\n");
    insert(&head, 4);
    return 0;
}
void
insert (**struct llnode **head**, int data) {--> why do we use a pointer to a pointer 
    printf("insert %0d\n", data);
struct    llnode *l = malloc(sizeof(struct llnode));
    l->data = data;
    l->next = NULL;
    if (*head == NULL) {
        *head = l;
    } else {
struct        llnode *tmp = *head;
        while (tmp->next != NULL) {
            tmp = tmp->next;
        }
        tmp->next = l;
    }
}
1)Why do we use a pointer to pointer. Can it be explained with an example. 2)How to do insertion into a doubly linked list? HElp me and please explain how to print
 
     
     
     
    