I tried implementing Linked List using C++ using a structure. I've included three functions - Size, Insertion and Deletion from the end. The program compiled successfully. During execution, when I tried to give input for the LLInsert() function, there was just a cursor blinking on my execution window. I don't know if the function returned to main. Also the LLSize() doesn't return 0 when I try to find the Size of a empty list. I can't seem to figure out what I'm doing wrong. Here is my code.
    #include<iostream>
    using namespace std;
    struct LL {
        LL *next = NULL;
        int data;
    };
    int LLSize(LL *head) {
        LL *current = new LL;
        current = head;
        int count = 0;
        while(current != NULL) {
            current = current -> next;
            count ++;
        }
        return count;
    }
    void LLInsert(LL *head,int value) {
        LL *current = new LL;
        current = head;
        LL *Newnode = new LL;
        Newnode -> data = value;
        Newnode -> next = NULL;
        if(head == NULL) {
            head = Newnode;
            return;
        }
        while(current->next != NULL) {
            current = current->next;
        }
        current->next = Newnode;
        return;
    }
    int LLDelete(LL *head) {
        LL *current = new LL;
        current = head;
        int deleteddata;
        while(current->next->next != NULL) {
            current = current->next;
        }
        current->next->data = deleteddata;
        current->next = NULL;
        return deleteddata;
    }
    int main() {
        int choice;
        LL *A;
        while(1) {
        cout << "1. Size\n2. Insert\n3. Delete\n4. Exit" << endl;
        cout << "Enter a choice : ";
        cin >> choice;
        switch(choice) {
            case 1 : {
                cout << "\nLength = " << LLSize(A) << endl;
                break;
            }
            case 2 : {
                int value;
                cout << "\nEnter the element to insert : ";
                cin >> value;
                LLInsert(A,value);
                break;
            }
            case 3 : {
                cout << LLDelete(A);
                break;
            }
            case 4 : {
                exit(0);
            }
            default : {
                cout << "\nInvalid choice. Enter a valid choice " << endl;
                break;
            }
        }
        }
    } 
 
    