السلام عليكم ورحمه الله وبركاته
اولاً اشكركم علي هذا الموقع المتميز والجميل والذي يساعد علي تطوير مهارات البرمجه بالطريقه الصحيحه
لقد بحثت فى المنتدي عن موضوع graph المتخصص بالجافا ولم اجد عنه اي شىء وانا كنت فعلا احتاج شرح عنه ولكن لم اجده وان شاء الله سوف اطرح موضوع شرح مفصل عنه فيما بعد لكي يستفيد الاخرون
المشكله عندي هي فى البرمجه اما الفهم وكيف يتم رسم ال graph وكيف يتم تحديد الابناء وكل هذا فقد فهمته ولكني لم استطيع ان ابداء بالبرمجه
فمثلا
public void addEdge(Node startnode, Node endnode, int weight) {
if (startnode != null && endnode != null) {
// only add edges between nodes which are already part of this graph
if(nodes.values().contains(startnode) && nodes.values().contains(endnode)){
startnode.addEdge(endnode, weight);
}
}
}
public void addEdge(int startnode, int endnode, int weight) {
addEdge(nodes.get(startnode), nodes.get(endnode), weight);
}
public Node addNode() {
Node newOne = null;
int newId = nodes.size();
newOne = new Node(newId);
nodes.put(newId, newOne);
return newOne;
}
public int getWeight(Node startnode, Node endnode) {
if (startnode != null && endnode != null) {
if(nodes.values().contains(startnode) && nodes.values().contains(endnode)){
return startnode.getWeight(endnode);
}
}
return Graph.WEIGHT_NO_EDGE;
}
public int getWeight(int startnode, int endnode) {
return getWeight(nodes.get(startnode), nodes.get(endnode));
}
public List<Node> getNodes() {
return new ArrayList<Node>(nodes.values());
}هذا الاكواد افهمها واعرفها جيدا لانها نفس محتوي الاشجار وال List وهو نوعا ما واضح
ولكن الان ينقصني ان افحص
اذا ماكان هناك بين Node واخري Edge او لا بالمعني هل يوجد شىء يصل بينهم الاثنين
واريد ايضا انا اعطي البرنامج Node ويعطيني جميع الابناء الذي هو متصل بهم بطريقه مباشره
public List<Node> getAdjacentNodes(Node startnode) {
List<Node> nodes = null;
// فهنا مثلا لا اعرف هل يجب عليا استخدام list وايضا اقوم بعمل for لكي امر علي جميع الابناء او كيف اريد فقط توضيح للبدايه وعندها سوف افهم كيف يجب عليا ان اكمل الكود
return nodes;
}
public boolean isConnected(Node startnode, Node endnode) {
// هنا لا اعرف كيف افحص هل هم متصلين او لا ؟ فكرت فى عمل طريقه تسمي EdgeTo لكي تفحص هل هم متصلين او لا ولكن لا اعرف ما استخدم هل List او ماذا
return false;
}
public boolean isConnected(int startNodeID, int endNodeID) {
return isConnected(nodes.get(startNodeID), nodes.get(endNodeID));
}
/**
* resets the state of all nodes and edges to white
*/
public void clearMarks() {
for (Node nextNode : nodes.values()) {
nextNode.status = Node.WHITE;
for (Edge nextEdge : nextNode.getIncidentEdges()) {
nextEdge.status = Edge.WHITE;
}
}
}واتمني الافاده بشرح لكي افهم ماهو المطلوب ^_^ لا اريد كود فقط وانما شرح لكي استفيد
شكرا لكم


