Ejemplo n.º 1
0
        public IList BreadthFirstSearch(BatteryStation s)
        {
            UnmarkAll();

            IList l = new ArrayList();
            Queue<BatteryStation> q = new Queue<BatteryStation>();

            q.Enqueue(s);
            l.Add(s);
            s.Mark = true;

            while (q.Count > 0)
            {
                BatteryStation n = q.Dequeue();
                BatteryStation c = null;

                while ((c = GetNextUnMarked(GetAdjacencies(n))) != null)
                {
                    c.Mark = true;
                    q.Enqueue(c);
                    l.Add(c);
                }
            }

            return l;
        }
Ejemplo n.º 2
0
        public void AddEdge(BatteryStation station, double distance, bool twoWay)
        {
            Edge newEdge = new Edge(this, station, distance);
            edges.Add(newEdge);

            if (twoWay)
                station.AddEdge(this, distance, false);
        }
Ejemplo n.º 3
0
        public IList DepthFirstSearch(BatteryStation st)
        {
            UnmarkAll();

            IList l = new ArrayList();
            Stack<BatteryStation> s = new Stack<BatteryStation>();

            s.Push(st);
            l.Add(st);
            st.Mark = true;

            while (s.Count != 0)
            {
                BatteryStation n = GetNextUnMarked(GetAdjacencies(s.Peek()));

                if (n != null)
                {
                    n.Mark = true;
                    l.Add(n);
                    s.Push(n);
                }
                else
                {
                    s.Pop();
                }
            }

            return l;
        }
Ejemplo n.º 4
0
 public bool ContainsStation(BatteryStation station)
 {
     return stations.Contains(station);
 }
Ejemplo n.º 5
0
 public void BreathFirstSearch(BatteryStation v)
 {
     throw new System.NotImplementedException();
 }
Ejemplo n.º 6
0
 public void AddStation(BatteryStation station)
 {
     if (!stations.Contains(station))
         stations.Add(station);
 }
Ejemplo n.º 7
0
 public void AddEdge(BatteryStation from, BatteryStation to, double distance, bool twoWay)
 {
     if (FindEdge(from, to) == null)
         from.AddEdge(to, distance, twoWay);
 }
Ejemplo n.º 8
0
        public void RemoveEdge(BatteryStation from, BatteryStation to)
        {
            Edge e_from = FindEdge(from, to);
            Edge e_to = FindEdge(to, from);

            if (e_from != null)
                e_from.From.RemoveEdge(e_from);

            if (e_to != null)
                e_to.From.RemoveEdge(e_to);
        }
Ejemplo n.º 9
0
        public void RemoveBatteryStation(BatteryStation station)
        {
            stations.Remove(station);

            IList<BatteryStation> adjList = GetAdjacencies(station);

            foreach (BatteryStation bs_adj in adjList)
                RemoveEdge(station, bs_adj);
        }
Ejemplo n.º 10
0
 public bool IsAdjacent(BatteryStation startStation, BatteryStation endStation)
 {
     return (FindEdge(startStation, endStation) != null);
 }
Ejemplo n.º 11
0
        public IList<BatteryStation> GetAdjacencies(BatteryStation station)
        {
            IList<BatteryStation> adjStations = new List<BatteryStation>();
            IEnumerator ien = station.EdgeList().GetEnumerator();

            while (ien.MoveNext())
            {
                Edge e = (Edge)ien.Current;
                adjStations.Add(e.To);
            }

            return adjStations;
        }
Ejemplo n.º 12
0
        public Edge FindEdge(BatteryStation from, BatteryStation to)
        {
            Edge edge = null;

            foreach (Edge e in from.EdgeList())
            {
                if (e.To.Equals(to))
                    edge = e;
            }

            return edge;
        }
Ejemplo n.º 13
0
 public Edge(BatteryStation From, BatteryStation To, double distance)
 {
     this._from = From;
     this._to = To;
     this._distance = distance;
 }