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

पायथन में लिंक्ड सूचियों के बीच विलय करने का कार्यक्रम

मान लीजिए कि हमारे पास क्रमशः m और n लंबाई की दो लिंक की गई सूचियाँ L1 और L2 हैं, हमारे पास भी दो स्थान a और b हैं। हमें एल1 से नोड्स को ए-वें नोड से नोड बी-वें नोड में निकालना होगा और एल2 को बीच में मर्ज करना होगा।

इसलिए, यदि इनपुट L1 =[1,5,6,7,1,6,3,9,12] L2 =[5,7,1,6] a =3 b =6 जैसा है, तो आउटपुट होगा हो [1, 5, 6, 5, 7, 1, 6, 9, 12]

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • head2:=L2, temp:=L2
  • जबकि अस्थायी में अगला नोड होता है, करते हैं
    • अस्थायी:=अस्थायी के बाद
  • tail2:=अस्थायी
  • गिनती :=0
  • अस्थायी:=L1
  • end1 :=null, start3 :=null
  • जबकि अस्थायी शून्य नहीं है, करें
    • यदि गिनती ए-1 के समान है, तो
      • अंत1:=अस्थायी
    • यदि गिनती b+1 के समान है, तो
      • प्रारंभ3:=अस्थायी
      • लूप से बाहर आएं
    • अस्थायी:=अस्थायी के बाद
    • गिनती :=गिनती + 1
  • अंत 1 के आगे :=शीर्ष2
  • tail2 के आगे :=start3
  • एल1 लौटाएं

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

class ListNode:
   def __init__(self, data, next = None):
      self.val = data
      self.next = next

def make_list(elements):
   head = ListNode(elements[0])
   for element in elements[1:]:
      ptr = head
      while ptr.next:
         ptr = ptr.next
      ptr.next = ListNode(element)
   return head

def print_list(head):
   ptr = head
   print('[', end = "")
   while ptr:
      print(ptr.val, end = ", ")
      ptr = ptr.next
   print(']')

def solve(L1, L2, a, b):
   head2 = temp = L2
   while temp.next:
      temp = temp.next
   tail2 = temp

   count = 0
   temp = L1
   end1, start3 = None, None
   while temp:
      if count == a-1:
         end1 = temp
      if count == b+1:
         start3 = temp
         break
      temp = temp.next
      count += 1

   end1.next = head2
   tail2.next = start3
   return L1

L1 = [1,5,6,7,1,6,3,9,12]
L2 = [5,7,1,6]
a = 3
b = 6
print_list(solve(make_list(L1), make_list(L2), a, b))

इनपुट

[1,5,6,7,1,6,3,9,12], [5,7,1,6], 3, 6

आउटपुट

[1, 5, 6, 5, 7, 1, 6, 9, 12, ]

  1. पायथन का उपयोग करके लिंक्ड सूचियों के रूप में दिए गए दो बहुपदों को जोड़ने का कार्यक्रम

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

  1. मर्ज सॉर्ट के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सरणी दी गई है, हमें मर्ज सॉर्ट की अवधारणा का उपयोग करके इसे सॉर्ट करने की आवश्यकता है यहां हम अधिकतम तत्व को अंत में रखते हैं। यह तब तक दोहराया जाता है जब तक कि सरणी क्रमबद्ध न हो जाए। आइए अब नीचे दिए गए कार

  1. इटरेटिव मर्ज सॉर्ट के लिए पायथन प्रोग्राम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सरणी दी गई है, हमें पुनरावृत्ति द्वारा मर्ज सॉर्ट की अवधारणा का उपयोग करके इसे सॉर्ट करने की आवश्यकता है। यहां हम अधिकतम तत्व को अंत में रखते हैं। यह तब तक दोहराया जाता है जब तक कि सरणी क्रमबद्ध न हो जाए। आ