PaulS:
What you say makes no sense.
At the top of the IDE is a menu. It has several items in the menu - File, Edit, Sketch, Tools, and Help. That looks like a list to me.
A node (an instance of a struct) could have a name ("File", "Edit", etc.) and a list of nodes that are the sub-menu items.
The node whose name is "File" would contain a pointer to the node whose name is "Edit", which would contain a pointer to the node whose name is "Sketch.
The node whose name is "File" would ALSO contain a pointer to a node whose name is "New". The "New" node would point to the "Open" node AND to NULL (since New has no child menu).
That's why I keep harping on linked lists. But, you keep rejecting that idea. I don't know what else to say.
Isnt that what I did? EC_PH points to PH but it "also" points to EC, and PH points to setmin and setmax. What is the disdvantage of using an array to store the pointers?
A menu for setting the time and date would need 6 pointers for example. Since the LCD is 2x16, the navigation I explained would let each member have a 2 dimensional index array[2][max] so pressing the down button on the third item will move you from array[0][2] to array[1][2], from the minutes to the year for example:
6:5>8< to 6:5:8
11/2/14 11/2>14<
Selection isnt a linear left/right since it seems to make logical sense when laying out the nagivation to make use of the screen instead of a linear menu bar/dropdown menu. But I see now how you can have submenu's linearly with your anology.
I have looked at some examples and some of them used templates (thats why I thought I needed them). Wikipedia referred to binary trees which sounds more like what you are describing.
It seems to me though that either way though, each "item" needs a pointer to it whether it be linearly or not. What is the disadvantage to grouping the pointers together in one member?