I'm stuck :(

Suppose that I have some data:

12,30
12,45
2,3
7,8
3,9
30, 8
45,54
56,65

Where (a,b) indicates that a is connected to b. I want to get all connected nodes to one point. For instance, the output of the above
example should be something like:
Group 1
2,3
3,9
Group 2
12,30
12,45
30,8
7,8
Group 3
45,54
Group 4
56,65

The order is not important as long as the whole group stays together. Reason why they are grouped like that:

  1. 2 is connected to 3 and 3 is connected to 9 and so we put all the three, i.e. 2,3,9 into one group.
  2. 12 is connected to 45 and 12 is also connected to 30 so we put these in the same group but 30 is connected to 8 and 8 is connected to
    7 so ultimately we put all these into the same group.
  3. 45 and 54 are connected but not related to any other numbers so we put them into another group
  4. 56 and 65 are connected but not related to any other numbers so we put them into another group

I am unable to figure out an algorithm for this. Can someone guide me?

I personally would do this as linked lists.

Thank you so much... Actually I was thinking of using linked lists in the beginning but then thought of applying some more graph theory principles. Inorder to be able to find the strongly connected components (which is what I desire), I need to transform this data into a bidirectional graph but I have no clue as to how this can be done...

doubly linked lists?

Yeah... I have access to Matlab... and I realized that I cannot do this using it... So I was just wondering how I could construct one for this type of data... Do I consider them as vertices or individual elements?