Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

जावा में K सॉर्ट की गई लिंक की गई सूचियों को मर्ज करें

हमें चर आकारों की लिंक्ड सूचियों की एक K संख्या दी जाती है जो उनके अनुक्रम में क्रमबद्ध होती हैं और हमें सूची को परिणामी सूची में इस तरह से मर्ज करना होता है कि परिणामी सरणी को क्रम में क्रमबद्ध किया जाता है और परिणामी सरणी को आउटपुट के रूप में मुद्रित किया जाता है उपयोगकर्ता।

उदाहरण के साथ समझते हैं:-

इनपुट -

इंट के =3;

सूची [0] =नया नोड(11);

सूची [0]। अगला =नया नोड(15);

सूची [0] .next.next =नया नोड(17);

सूची [1] =नया नोड(2);

सूची [1]। अगला =नया नोड (3);

list[1].next.next =नया नोड(26);

सूची[1].next.next.next =नया नोड(39);

सूची[2] =नया नोड(4);

सूची[2]। अगला =नया नोड(8);

सूची[2].नेक्स्ट.नेक्स्ट =नया नोड(10);

आउटपुट −विलय की गई सूची है-->

2>> 3>> 4>> 8>> 10>> 11>> 15>> 17>> 26>> 39>> शून्य

स्पष्टीकरण -हमें K संख्या की लिंक्ड सूचियाँ दी गई हैं जिन्हें क्रम में क्रमबद्ध किया गया है। विलय प्रक्रिया में जावा तुलनित्र फ़ंक्शन का उपयोग करके लिंक की गई सूची के प्रमुख की तुलना करना और परिणामी सरणी में उन्हें एक साथ मर्ज करना शामिल है।

इनपुट -

इंट के =2;

सूची [0] =नया नोड(1);

सूची [0]। अगला =नया नोड (4);

सूची [0] .next.next =नया नोड(5);

सूची [1] =नया नोड(2);

सूची [1]। अगला =नया नोड (3);

list[1].next.next =नया नोड(6);

सूची[1].next.next.next =नया नोड(8);

आउटपुट - मर्ज की गई सूची है-->

1>> 2>> 3>> 4>> 5>> 6>> 8>> शून्य

स्पष्टीकरण -हमें K संख्या की लिंक्ड सूचियाँ दी गई हैं जिन्हें क्रम में क्रमबद्ध किया गया है। विलय प्रक्रिया में जावा तुलनित्र फ़ंक्शन का उपयोग करके लिंक की गई सूची के प्रमुख की तुलना करना और परिणामी सरणी में उन्हें एक साथ मर्ज करना शामिल है।

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है -

  • हम सूची (के) की संख्या के साथ इनपुट कर रहे हैं जिसे मर्ज करने की आवश्यकता है।

  • एक नोड क्लास को इनिशियलाइज़ किया जाता है जो एक लिंक्ड लिस्ट के नोड्स बनाने के लिए जिम्मेदार होता है।

  • उसके बाद लिंक की गई सूची के नोड्स को क्रमबद्ध क्रम में प्रारंभ किया जाता है और लिंक की गई सूची के प्रमुख को फ़ंक्शन (मर्जलिस्ट) के माध्यम से के रूप में पैरामीटर के साथ पारित किया जाता है।

  • फ़ंक्शन के अंदर लूप के अंदर दूसरी सूची से एक लूप को पुनरावृत्त किया जाता है, दूसरे लूप को पुनरावृत्त किया जाता है जिसमें तत्व की तुलना के लिए सभी उपयोगिता शामिल होती है।

  • पहली और पहली सूची दोनों के शीर्ष को वेरिएबल में कैप्चर और संग्रहीत किया जाता है।

  • फिर दोनों शीर्षों को छोटे शीर्ष तत्व के लिए जाँचा जाता है और परिणाम और परिणामी शीर्ष को अंतिम सूची के प्रमुख के रूप में सेट किया जाता है।

  • फिर सूची के निम्नलिखित तत्वों के लिए इसी तरह की प्रक्रिया की जाती है और डेटा की तुलना उनके सही क्रम के अनुसार की जाती है।

  • यदि सूची को अंत तक पुनरावृत्त किया जाता है तो अंतिम नोड को शून्य पर सेट कर दिया जाता है और अंतिम सूची उपयोगकर्ता को आउटपुट के रूप में वापस कर दी जाती है।

उदाहरण

आयात करें अगला नोड; सार्वजनिक नोड (इंट डेटा) { यह डेटा =डेटा; यह अगला =शून्य; }}पब्लिक क्लास टेस्टक्लास{ पब्लिक स्टैटिक नोड मर्जलिस्ट्स (नोड[] लिस्ट, इंट के) { प्रायोरिटी क्यू <नोड> प्रायोरिटी क्यू; प्राथमिकता क्यू =नई प्राथमिकता क्यू <नोड> (तुलनित्र.comparingInt (ए -> ((नोड) ए)। डेटा)); प्राथमिकता क्यूई.एडऑल (Arrays.asList (सूची)। उपसूची (0, के)); नोड सिर =अशक्त, अंतिम =अशक्त; जबकि (!priorityQueue.isEmpty ()) {नोड मिनट =प्राथमिकता क्यू.पोल (); अगर (सिर ==शून्य) {सिर =अंतिम =मिनट; } और { last.next =min; अंतिम =मिनट; } अगर (न्यूनतम। अगला! =शून्य) {प्राथमिकता क्यूई। जोड़ें (न्यूनतम। अगला); } } वापसी सिर; } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] एस) { int k =3; नोड [] सूची =नया नोड [के]; सूची [0] =नया नोड (11); सूची [0]। अगला =नया नोड (15); सूची [0]। अगला। अगला =नया नोड (17); सूची [1] =नया नोड (2); सूची [1]। अगला =नया नोड (3); सूची [1]। अगला। अगला =नया नोड (26); सूची [1]। अगला। अगला। अगला =नया नोड (39); सूची [2] =नया नोड (4); सूची [2]। अगला =नया नोड (8); सूची [2]। अगला। अगला =नया नोड (10); System.out.println ("मर्ज की गई सूची है -->"); नोड हेड =मर्जलिस्ट (सूची, के); जबकि (सिर! =शून्य) {System.out.print(head.data + ">>"); सिर =सिर। अगला; } System.out.print("null"); }}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा

मर्ज की गई सूची है-->2>> 3>> 4>> 8>> 10>> 11>> 15>> 17>> 26>> 39>> शून्य

  1. सी++ में डबल लिंक्ड सर्कुलर सूचियां

    सर्कुलर लिंक्ड लिस्ट लिंक्ड लिस्ट का एक रूपांतर है जिसमें पहला तत्व अंतिम तत्व को इंगित करता है और अंतिम तत्व पहले तत्व को इंगित करता है। सिंगल लिंक्ड लिस्ट और डबल लिंक्ड लिस्ट दोनों को सर्कुलर लिंक्ड लिस्ट में बनाया जा सकता है। डबल लिंक्ड लिस्ट में, अंतिम नोड का अगला पॉइंटर पहले नोड को इंगित करता

  1. जावा में वैकल्पिक पदों पर एक लिंक की गई सूची को किसी अन्य लिंक की गई सूची में मर्ज करें

    हमें लिंक की गई सूची के रूप में दो डेटा संरचनाएं दी गई हैं, मान लीजिए, List_1 और List_2। कार्य लिंक की गई सूची List_2 के तत्वों को एक वैकल्पिक स्थिति में लिंक की गई सूची List_1 में मर्ज करना है और यदि हमारे पास ऐसे तत्व रह जाते हैं जिन्हें List_1 में मर्ज नहीं किया जा सकता है, तो इसे के रूप में मुद्

  1. जावा में दो लिंक्ड सूचियों का प्रतिच्छेदन बिंदु खोजें

    एक लिंक्ड सूची एक रैखिक डेटा संरचना है जिसमें प्रत्येक नोड में दो ब्लॉक होते हैं जैसे कि एक ब्लॉक में नोड का मान या डेटा होता है और दूसरे ब्लॉक में अगले फ़ील्ड का पता होता है। आइए मान लें कि हमारे पास एक लिंक्ड सूची है जैसे कि प्रत्येक नोड में एक यादृच्छिक सूचक होता है जो सूची में अन्य नोड्स को इंग