Example #1
0
 /// <summary>
 /// Задает уровень станции в графе
 /// </summary>
 /// <param name="container"></param>
 /// <param name="currentStation"></param>
 /// <param name="currentLevel"></param>
 /// <returns></returns>
 private int SetStationLevel(ITempStationsContainer container, IStation currentStation, int currentLevel)
 {
     foreach (IStation station in currentStation.GetConnectedStations())
     {
         if (container.GetLevelOfStation(station) != -1)
         {
             return(container.GetLevelOfStation(station) + 1);
         }
     }
     return(currentLevel++);
 }
Example #2
0
        /// <summary>
        /// Возвращает кратчайший путь
        /// </summary>
        /// <param name="container"></param>
        /// <param name="stationFrom"></param>
        /// <param name="stationTo"></param>
        /// <param name="currentLevel"></param>
        /// <returns></returns>
        private List <IStation> FormPath(ITempStationsContainer container, IStation stationFrom, IStation stationTo, int currentLevel)
        {
            int             level            = currentLevel;
            List <IStation> path             = new List <IStation>();
            List <IStation> tempStationsList = new List <IStation>();
            IStation        stationTemp      = stationTo;
            bool            IsStationFound   = false;

            path.Add(stationTo);

            while (level > 0)
            {
                IsStationFound   = false;
                tempStationsList = container.GetStationsFromLevel(level);

                foreach (IStation station in tempStationsList)
                {
                    if (IsStationFound)
                    {
                        break;
                    }

                    foreach (IStation stat in stationTemp.GetConnectedStations())
                    {
                        if (station.GetStationID() == stat.GetStationID())
                        {
                            stationTemp    = stat;
                            IsStationFound = true;
                        }
                    }
                }
                path.Add(stationTemp);

                level--;
            }
            path.Add(stationFrom);

            path.Reverse();

            return(path);
        }