static private void generateRandomPath(Model.Demand demand) { Random generator = new Random(); Model.Vertex begin = demand.Begin; Model.Vertex end = demand.End; new_network.resetVertices(); //Console.WriteLine("Żądanie: " + demand.Begin.Id + " " + demand.End.Id); //demand.Path = new Stack<Model.Edge>(); //Model.Vertex currentVertex = begin; //do //{ // Model.Edge currentEdge = currentVertex.getRandomEdgeOut(); // if (!currentVertex.Visited && currentEdge != null) // { // currentVertex.Visited = true; // demand.Path.Push(currentEdge); // currentVertex = currentEdge.End; // Console.WriteLine(currentEdge.Begin.Id + " -> " + currentEdge.End.Id); // } // else // { // currentVertex.Visited = true; // Model.Vertex tmp = currentVertex; // currentVertex = demand.Path.Pop().Begin; // currentVertex.Visited = false; // Console.WriteLine(currentVertex.Id + " <- " + tmp.Id); // } //} while (demand.Path.Peek().End != end); Stack <Model.Vertex> path = new Stack <Model.Vertex>(); demand.Path = new Stack <Model.Edge>(); path.Push(begin); while (path.Peek() != end) { Model.Vertex currentVertex = path.Peek(); Model.Edge currentEdge = currentVertex.getRandomEdgeOut(); if (!currentVertex.Visited && currentEdge != null) { //Console.WriteLine(currentEdge.Begin.Id + " -> " + currentEdge.End.Id); demand.Path.Push(currentEdge); path.Push(currentEdge.End); } else { demand.Path.Pop(); path.Pop(); Model.Vertex tmp = path.Peek(); //Console.WriteLine(tmp.Id + " <- " + currentVertex.Id); path.Peek().Visited = false; } currentVertex.Visited = true; } }