Potrebbe essere meglio prima trasformarlo in una struttura ad albero:
Menu Top
|
Nodes with NULL p_id
|
Children
Puoi farlo creando una classe MenuNode che ha una matrice di figli. Non è necessario farlo in questo modo, ma renderà molto più semplice creare una funzione ricorsiva per l'output del menu.