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

पायथन में दी गई लिंक की गई सूची से मुड़ी हुई सूची खोजने का कार्यक्रम

मान लीजिए हमारे पास एक लिंक्ड सूची है। हमें लिंक की गई सूची का पहला आधा भाग लेना है और दूसरी छमाही में गुना करना है और फिर इंटरसेक्टिंग नोड्स को उनकी राशि लेकर मर्ज करना है। अंत में, हमें लिंक की गई सूची के परिणामी शीर्ष को वापस करना होगा।

इसलिए, यदि इनपुट [5,8,1,2,4,7,5] जैसा है, तो आउटपुट [2, 5, 15, 10, ]

होगा।

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

  • अस्थायी:=0
  • ptr:=नोड
  • जबकि पीटीआर शून्य नहीं है, करें
    • अस्थायी:=अस्थायी + 1
    • ptr:=ptr के आगे
  • t:=अस्थायी / 2 का भागफल
  • एम :=नोड
  • stk :=एक नया स्टैक
  • जबकि t गैर-शून्य है, करें
    • m का मान stk में पुश करें
    • tmp:=मी के आगे
    • एम के आगे:=शून्य
    • एम:=टीएमपी
    • t :=t - 1
  • नोड:=मी
  • यदि तापमान सम है, तो
    • m :=m के आगे
  • जबकि m रिक्त नहीं है, करें
    • m का मान :=m + स्टैक टॉप एलिमेंट का मान.
    • stk से पॉप
    • m :=m के आगे
  • वापसी नोड

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

उदाहरण

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(']')
class Solution:
   def solve(self, node):
      temp = 0
      ptr = node
      while ptr:
         temp += 1
         ptr = ptr.next
      t = temp // 2
      m = node
      stk = []
      while t:
         stk.append(m.val)
         tmp = m.next
         m.next = None
         m = tmp
         t -= 1
      node = m
      if temp % 2 != 0:
         m = m.next
      while m:
         m.val += stk.pop()
         m = m.next
      return node
ob = Solution()
head = make_list([5,8,1,2,4,7,5])
print_list(ob.solve(head))

इनपुट

[5,8,1,2,4,7,5]

आउटपुट

[2, 5, 15, 10, ]

  1. पायथन में दिए गए बाइनरी ट्री में एक लिंक्ड सूची मौजूद है या नहीं यह पता लगाने के लिए कार्यक्रम

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

  1. पायथन में लिंक की गई सूची से m नोड्स के बाद n नोड्स को हटाने का कार्यक्रम

    मान लीजिए कि हमें एक लिंक्ड सूची दी गई है जिसमें हेड के रूप में प्रारंभ नोड है, और दो पूर्णांक संख्याएं एम और एन हैं। हमें सूची को पार करना होगा और कुछ नोड्स को हटाना होगा जैसे कि पहले m नोड्स को सूची में रखा जाता है और अगले n नोड्स को पहले m नोड्स को हटा दिए जाने के बाद। हम इसे तब तक करते हैं जब तक

  1. सूची से एन सबसे बड़े तत्वों को खोजने के लिए पायथन कार्यक्रम

    एक पूर्णांक सूची को देखते हुए, हमारा कार्य सूची में N सबसे बड़े तत्वों को खोजना है। उदाहरण Input : [40, 5, 10, 20, 9] N = 2 Output: [40, 20] एल्गोरिदम Step1: Input an integer list and the number of largest number. Step2: First traverse the list up to N times. Step3: Each traverse find the largest va