Problem3: An ordinary adjacency list has a link list for each vertex in the graph. A node in the link list has a pointer to the next node. In the question you are ask to make two occurences of each edge point to each other. You can add one additional pointer to the node and point it to the node which represents the same edge. For example, 1--3 is an edge between vertex 1 and vertex 3. Add the pointers so that they point to each other. 1 -> ...-> 3 -> ... ->/ / \ 2 -> ... | | \ / 3 -> ...-> 1 -> ... ->/ 4 -> ... . . .