public TwoWayLinkedList GetRoute(TwoWayLinkedList chosenCities, City startPoint) { /* * LIST chosenCities SHOULDN'T CONTAIN STARTPOINT */ City currentCity = startPoint; int currentCityIndex = 0; int[] distanceFromCurrentCity; City nearestNeighbour; int nearestNeighbourIndex; TwoWayLinkedList route = new TwoWayLinkedList(); while (chosenCities.GetSize() != 0) { currentCityIndex = FindCurrentCityIndex(currentCity); distanceFromCurrentCity = Dijkstra(CitiesInfo.Distances, currentCityIndex); nearestNeighbourIndex = MinDistanceIndex(distanceFromCurrentCity, chosenCities); nearestNeighbour = CitiesInfo.Cities[nearestNeighbourIndex]; route.Concatenation(intermediateCities[nearestNeighbourIndex]); route.PushLast(nearestNeighbour); chosenCities.DelMidle(chosenCities.IndexOf(nearestNeighbour)); currentCity = nearestNeighbour; } return(ClearRepetitions(route)); }