Liste semplici in c++

//
//  main.cpp
//  Liste
//
//  Created by alessandro barazzuol on 17/07/21.
//  Copyright © 2021 Alessandro Barazzuol. All rights reserved.
//

#include <iostream>
#include<cstdlib>
#include <ctime>


using namespace std;

/*definisce un elemento di una lista*/
struct nodo
{
    int val;
    nodo *next;

};

/*valorizza una lista vuota con n elementi */
nodo *valorizza(int n)
{
    
    if(!n)
        /*se n==0 ritorna nullptr, in coda ci sara sempre nullptr*/
        return nullptr;
    else
    {
         nodo *nuovo=new nodo;
         nuovo->val=rand()%10;
         n--;
         nuovo->next=valorizza(n);
         return nuovo;
    }
    
}


/*visualizza la lista*/
void visualizza(nodo *t)

{
    if(t!=NULL)
    {
        
        cout<<t->val<<" ";
        visualizza(t->next);
        
    }
    
}

/*inseriesce un elemento in testa*/
void pop(nodo *ele, nodo *&lista)
{
    
        nodo *tmp=lista;
        lista=ele;
        lista->next=tmp;
   
    
}


/*inseriesce un elemento(ele) in coda alla lista*/
void append(nodo *ele,nodo *lista)
{
    
    
    while(lista->next)
    {
        lista=lista->next;
    }
    lista->next=ele;
    /*ricordarsi di chiudere la lista*/
    ele->next=nullptr;
}


void view_address(nodo *lista)
{
    
    while(lista)
    {
        
        cout<<lista<<" "<<"["<<lista->val<<"]";
        lista=lista->next;

        
    }
}

int lung(nodo *lista)
{
    int i=0;
    while(lista->next)
    {
        i++;
        lista=lista->next;
    }
    return i;
}