コード例 #1
0
        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));
        }