public void AddLineToGraph(List<station> line, string line_name)
        {
            for (int i = 0; i < line.Count; i++) // for each station on the line
            {
                bool node_exists = false;
                station prev = null, next = null;
                if (i > 0) // if it's not the first node, a previous station exists
                {
                    prev = line[i - 1]; // prev = the previous station in the list
                }
                if (i < (line.Count - 1)) // if it's not the last node, a next station exists
                {
                    next = line[i + 1]; // next = the next station in the list
                }

                // if the node already exists in the graph, we want to add this line/route
                // and these next/prev references to it's adjacency_list rather than
                // add a duplicate node

                foreach (GraphNode n in graph)
                {
                    if (n.name == line[i].name) // if a node exists with this name
                    {
                        Dictionary<string, station> adj = new Dictionary<string, station>(); // new sub-Dict
                        adj.Add("next", next); // set next reference
                        adj.Add("prev", prev); // set prev reference
                        n.adjacency_list.Add(line_name, adj); // add sub-Dict to main-Dict
                        n.lines.Add(line_name); // this list is handy if you just want to see what lines exist for this GraphNode, but isn't used yet
                        node_exists = true; // set a flag
                    }
                }

                // if we didn't find a matching node, ADD A NEW NODE
                if (node_exists == false)
                {
                    GraphNode node = new GraphNode(line[i], line_name, next, prev); // create a new node
                    graph.Add(node); // add it to the graph
                }
            }
        }
 public PathNode(string station, string line, GraphNode node)
 {
     this.name = station;
     this.line = line;
     this.node = node;
 }