Un buon programma non usa le funzioni generiche delle librerie standard
ma deve creare soluzioni specifiche per i suoi scopi al fine di
migliorare l'efficienza (principi di ing. del software).
Quindi tutte le pagine del libro che riguardano le librerie sono solo un riferimento
ma non utili a chi vuole conoscere il linguaggio in se.

In quanto ai libri eccovi un confronto su come implementare una lista
a puntatori, argomento già complesso di per se!

McGraw-Hill:
void Lista:ush(const E e){
L q=new Record;
q->elem=e;
q->punt=l;
l=q;
}
...l,L,q,e,E, manca poco per completare l'alfabeto...mah...inoltre poche
delucidazioni sul significato, utile solo per un esperto!

Deitel:
// Insert a node at the front of the list
template< class NODETYPE >
void List< NODETYPE >::insertAtFront( const NODETYPE &value )
{
ListNode< NODETYPE > *newPtr = getNewNode( value );

if ( isEmpty() ) // List is empty
firstPtr = lastPtr = newPtr;
else { // List is not empty
newPtr->nextPtr = firstPtr;
firstPtr = newPtr;
}
}
Significato chiaro delle variabili, principi di protezione,
uso dei template per avere una lista di un qualsiasi oggetto,
completezza, gestione efficiente, etc...
Il tutto spiegato riga per riga e con chiarezza espositiva.

In quanto alla questione del programmatore, se anche per te la progettazione vieni prima
di tutto, mi fa piacere, sul serio: sei uno dei pochi. Molti scrivono codice per esperienza senza vedere
se c'è una soluzione migliore e altri vanno a tentativi, questo non puoi negarlo!
Poi ho generalizzato, per questo mi scuso, anche tra gli ingegneri ci sono delle anomalie :-)!

Il nostro amico che ha posto la domanda non sò se lo abbiamo aiutato o confuso ancora di più :-)!