I was writing a small program using pointers, This is my code:
    #include<iostream>
using namespace std;
struct number
{
int data;
number *next;
} test;
number * last_node(number *head)
{
    number *temp = new number;
    temp = head;
    while (temp->next != nullptr)
    {
        temp = temp->next;
    }
    return temp;
}
void insert_at_end (number *head)
{
    number *temp = new number;
    number *last = new number;
last = last_node(*head);
    cout<<"Enter the data";
    cin>>temp->data;
    temp->next = nullptr;
    last->next = temp;
}
void view_all (number *head)
{
    number *temp = new number;
    temp = head;
    while (temp->next != nullptr)
    {
        cout<<temp->data;
        temp = temp->next;
    }
}
int main()
{
    number *head = &test;
    int choice;
    char ans = 'y';
    do
    {
    cout<<"Enter your choice";
    cout<<"\n 1. Insert ";
    cout<<"\n 2. View ";
    cout<<"\n 3. Exit ";
    cin>>choice;
    switch (choice)
    {
        case 1 : insert_at_end(head);
        break;
        case 2 : view_all(head);
        break;
        case 3 : goto label;
        default : cout<<"You have entered wrong choice";
    }
    cout<<"Do you want the menu again ? (y/n)" ;
    cin>>ans;
    }
    while (ans = 'y');
    label:
        return 0;
}
On compilation, an error occurs on saying it can't convert "number" to "number*" while calling the function 'last_node(*head)'.
Can you please help me understand this properly?
 
    