Може би е най-добре първо да превърнете това в структура от дървовиден тип:
Menu Top
|
Nodes with NULL p_id
|
Children
Можете да направите това, като създадете клас MenuNode, който има масив от деца. Не е нужно да го правите по този начин, но това ще направи много по-лесно създаването на рекурсивна функция за извеждане на менюто.