Based on the responses I think I have an algorithm worked out.
Let there be one master list for each player. Each of these master lists contains one or more lists of contiguous hex spaces.
Each hex space will store array positions for all possible adjacent hexes (<=6).
So when a hex for a player is added...
1. If this is the first ever hex to be added for a player, add a new list to the master list and put that hex in it.
2. Walk through the array of
possible adjacent hexes for the newly added hex. Check those array positions to see if it is occupied by the same player. If there is a match, assume it is contiguous and add the matched adjacent hex to the list of contiguous hexes the newly added hex is on. If a newly added hex has no adjacent matches, add a new list to the master list and put it in there.
3. Loop through all of the lists in the master list, check for adjacencies and collapse the two lists being compared if a match is found.
4. Check each list of contiguous hexes in the master list to see if there are two hexes from opposite sides of the board. If they are found, the game is over.
So in this example there would be two master lists, one for red and one for blue. Red has one list of contiguous hex spaces and blue has four.

I know this algorithm isn't very elegant...that aside, can anyone find a case where it would not work? I'm very new to this path logic stuff and this the best I could wrap my head around.
I appreciate all the help so far with this! I'll post code somewhere when it is done.
Edited by timothyjlaird, 06 September 2012 - 09:24 PM.