I'm trying to create a linked list that has 2 data types and a function that inserts nodes. But in order to insert nodes, I have to create at least 1 empty node first.
linked list struct
struct receipt{
    string name;
    double price;
    receipt* link;
};
function that inserts a node at the end of the list
void insert(receipt** head_name_ref, string new_name, double new_price)
{
    receipt* new_name_node = new receipt();
    receipt *last = *head_name_ref;
    new_name_node->name = new_name;
    new_name_node->price = new_price;
    new_name_node->link = NULL;
    if (*head_name_ref == NULL)
    {
        *head_name_ref = new_name_node;
        return;
    }
    while (last->link != NULL)
    {
        last = last->link;
    }
    last->link = new_name_node;
    return;
}
function that print the list
void printList(receipt* n){
    while(n!=NULL){
        cout<<"Name: "<<n->name<<'\t'<<" ";
        cout<<"Price: "<<n->price<<'\t'<<" ";
        cout<<endl;
        n=n->link;
    }
}
main function
int main(){
    receipt* head = NULL;
    head = new receipt;
    insert(&head, "item", 23);
    printList(head);
    return 0;
}
here is a picture of the output https://i.stack.imgur.com/6Ss02.png
 
     
    