हम एक ग्राफ़ क्लास बनाएंगे जो वज़न और निर्देशित और अप्रत्यक्ष दोनों प्रकारों का समर्थन करता है। इसे एक आसन्न सूची का उपयोग करके लागू किया जाएगा। जैसे-जैसे हम अधिक उन्नत अवधारणाओं की ओर बढ़ते हैं, ग्राफ़ के भार और निर्देशित प्रकृति दोनों ही काम आएंगे।
एक आसन्न सूची अलग सूचियों की एक सरणी ए है। ऐरे का प्रत्येक अवयव एक सूची है, जिसमें वे सभी शीर्ष शामिल हैं जो शीर्ष i से सटे हैं। हम इसे 2 सदस्यों, नोड्स और किनारों का उपयोग करके परिभाषित कर रहे हैं।
आइए अपनी कक्षा और कुछ विधियों को परिभाषित करके ग्राफ़ क्लास सेट करें जिनका उपयोग हम अपने ग्राफ़ में नोड्स और किनारों को जोड़ने के लिए करेंगे।
हम शुरू में निम्नलिखित विधियों को परिभाषित करेंगे -
- addNode:ग्राफ़ में एक नोड जोड़ता है
- addEdge:ग्राफ़ में एक अप्रत्यक्ष किनारा जोड़ता है
- addDirectedEdge:एक निर्देशित किनारा जोड़ता है
उदाहरण
क्लास ग्राफ {कन्स्ट्रक्टर () {this.edges ={}; यह नोड्स =[]; } एडनोड (नोड) {this.nodes.push (नोड); यह किनारों [नोड] =[]; } addEdge (नोड 1, नोड 2) { यह किनारों [नोड 1]। पुश (नोड 2); यह किनारों [नोड 2]। पुश (नोड 1); } addDirectedEdge(node1, node2) {this.edges[node1].push(node2); } प्रदर्शन () { ग्राफ ="" दें; this.nodes.forEach(नोड => {ग्राफ +=नोड + "->" + this.edges[node].join(", ") + "\n"; }); कंसोल.लॉग (ग्राफ); }}पूर्व>आप -
. का उपयोग करके इन विधियों और हमारी कक्षा का परीक्षण कर सकते हैंउदाहरण
चलो g =नया ग्राफ़ ();g.addNode("A");g.addNode("B");g.addNode("C");g.addNode("D");g.addNode ("इ"); g.addEdge("A", "C");g.addEdge("A", "B");g.addDirectedEdge("A", "D");g.addEdge("D", "E" );g.डिस्प्ले ();आउटपुट
यह आउटपुट देगा -
A->C, B, DB->AC->AD->EE->D