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

पायथन में आगे और पीछे नोड्स को बारी-बारी से लिंक की गई सूची को बदलने का कार्यक्रम

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

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

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

  • सी:=नोड

  • एल:=एक नई सूची

  • जबकि c शून्य नहीं है, करें

    • l के अंत में c का मान डालें

    • c :=c के आगे

    • सी:=नोड

    • जबकि c रिक्त नहीं है और l खाली नहीं है, करें

      • c का मान:=l से अंतिम तत्व का मान और इसे हटा दें

      • c :=c के आगे

      • अगर c शून्य है, तो

        • लूप से बाहर आएं

      • c का मान:=l से अंतिम तत्व का मान और इसे हटा दें

      • c :=c के आगे

  • वापसी नोड

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

उदाहरण

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):
      c = node
      l = []
      while c:
         l.append(c.val)
         c = c.next

      c = node
      while c and l:
         c.val = l.pop()
         c = c.next
         if c == None:
            break
         c.val = l.pop(0)
         c = c.next
      return node

ob = Solution()
head = make_list([1,2,3,4,5,6,7,8,9])
print_list(ob.solve(head))

इनपुट

[1,2,3,4,5,6,7,8,9]

आउटपुट

[9, 1, 8, 2, 7, 3, 6, 4, 5, ]

  1. पायथन में लिंक की गई सूची में नोड्स को स्वैप करने का कार्यक्रम

    मान लीजिए कि हमारे पास एक सूची L और दूसरा मान k है। हमें शुरू से kth नोड और अंत से kth नोड को स्वैप करना होगा और अंत में अंतिम सूची वापस करनी होगी। इसलिए, यदि इनपुट L =[1,5,6,7,1,6,3,9,12] k =3 जैसा है, तो आउटपुट [1,5,3,7,1,6, 6,9,12], शुरू से तीसरा नोड 6 है और अंत से 3 है, इसलिए उनकी अदला-बदली की

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

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

  1. पायथन में लिंक की गई सूची को ज़िग-ज़ैग बाइनरी ट्री में बदलने का कार्यक्रम

    मान लीजिए कि हमारे पास एक एकल लिंक की गई सूची है, हमें इसे निम्नलिखित नियमों का उपयोग करके एक बाइनरी ट्री पथ में बदलना होगा - लिंक की गई सूची का प्रमुख मूल है। प्रत्येक बाद वाला नोड माता-पिता का बायां बच्चा होता है जब उसका मान कम होता है, अन्यथा यह सही बच्चा होगा। तो, अगर इनपुट [2,1,3,4,0,5] जैसा