vi faccio un esempio.

Meglio così:
codice:
void main()
{
	// bla bla bla
        ...

	Lista* l = new Lista[300000];

	// riempio la lista

       ...
 		while( condizione )
		{
			...
			
			while(condizione)
			{
				...

				while(condizione)
				{
					...
						while(condizione)
						{
							...
						}
						...			
				}
			}
		} 

                ...

		while( condizione )
		{
			...
			while( condizione )
			{
				...
				while( condizione )
				{
					...
				}
			}
		}
		...
                delete [] l;
}
o così:
codice:
void funzione1(Lista[],int&,int&,char[]);
void funzione2(Lista[],int&);

void main()
{
	// bla bla bla
        ...

	Lista* l = new Lista[300000];

	// riempio la lista

       funzione1(l,i,n,nome);
       funzione2(l,n);
       

       delete [] l;
}

void funzione1(Lista[] l,int& i,int& n,char[] nome)
{
while( condizione )
		{
			...
			
			while(condizione)
			{
				...

				while(condizione)
				{
					...
						while(condizione)
						{
							...
						}
						...			
				}
			}
		} 
}

void funzione2(Lista[] l,int& n)
{
while( condizione )
		{
			...
			while( condizione )
			{
				...
				while( condizione )
				{
					...
				}
			}
		}
}
Io penso che in termini di TEMPO DI ESECUZIONE non ci sia differenza, o uno dei due modi è più veloce?