Как я могу напечатать путь, пройденный в dijkstra'S с помощью стека ?
я сделал класс dijkstra для вычисления кратчайшего пути но мне нужен метод для печати пути прохождения с помощью стека я не знаю как я могу это сделать мне нужна ваша помощь в этом
Что я уже пробовал:
import java.util.Comparator; import java.util.Hashtable; import java.util.List; import java.util.PriorityQueue; public class Dijkstra { Hashtable<Integer, SearchNode> visitedNodes = new Hashtable(); Comparator<searchnode> cmp = new Comparator<searchnode>() { // @Override public int compare(SearchNode m, SearchNode n) { return m.cost - n.cost; } }; PriorityQueue<searchnode> pQueue = new PriorityQueue<searchnode>(cmp); public int getShortestPath(Graph g, int source, int destination) { SearchNode sourceSearchNode = new SearchNode(source, 0); pQueue.add(sourceSearchNode); visitedNodes.put(source, sourceSearchNode); while (!pQueue.isEmpty()) { SearchNode currentNode = pQueue.poll(); if (currentNode.nodeId == destination) { return currentNode.cost; } if (visitedNodes.get(currentNode.nodeId).settled) { continue; } visitedNodes.get(currentNode.nodeId).settled = true; List<edge> edges = g.getEdges(currentNode.nodeId); for (Edge edge : edges) { int newCost = (int) (currentNode.cost + edge.getCost()); int edgeDestinationNodeId = edge.getDestination(); SearchNode edgeDtSearchNode = visitedNodes.get(edgeDestinationNodeId); if (edgeDtSearchNode == null || newCost < edgeDtSearchNode.cost) { if (edgeDtSearchNode == null) { edgeDtSearchNode = new SearchNode(edgeDestinationNodeId, newCost); visitedNodes.put(edgeDestinationNodeId, edgeDtSearchNode); } edgeDtSearchNode.cost = newCost; edgeDtSearchNode.parent = currentNode.nodeId; pQueue.add(edgeDtSearchNode); } } } return Integer.MAX_VALUE; }
OriginalGriff
Вы написали код, что мешает вам напечатать его самостоятельно?
[no name]
я попробовал напечатать путь по стеку и он не работает если есть что то что вы можете мне помочь я был бы очень благодарен
OriginalGriff
Итак, что вы попробовали: покажите нам соответствующие фрагменты кода.
И объясните себе: "это не работает" ничего не говорит нам о том, что он сделал, чего вы не ожидали, или не сделал того, что вы сделали!
И вы написали этот код, так что вы должны полностью понять его!
Afzaal Ahmad Zeeshan
Зачем использовать стек?
[no name]
мне это нужно с помощью стека , что-нибудь еще ?
OriginalGriff
Я подозреваю, что это требование его домашнего задания, что он получил код, который у него есть из интернета, и еще не пытался понять его.
Итак, у него есть требование, которое он не может выполнить, и он понятия не имеет, что делать.